diff --git a/.devcontainer/README.md b/.devcontainer/README.md new file mode 100644 index 000000000..8945893df --- /dev/null +++ b/.devcontainer/README.md @@ -0,0 +1,15 @@ +# How to use Dev container + +- Install Docker and the 'Devcontainer' extension in VSCode + +- Clone the repository and open the folder in VSCode + +- Use `Ctrl/Cmd + Shift + P` to open the command palette + +- Select 'Dev containers: Rebuild and Reopen in Container' Option + +- Wait for the container to finish setting up + +- Type this command into the terminal `roslaunch pycram ik_and_description.launch` to start roscore + + - Note: Bullet world needs a display to be connected; the render mode needs to be set to direct when running on GitHub codespaces or on WindowOS; Otherwise, the kernel will crash diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100644 index 000000000..b5c5b59a6 --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,23 @@ +{ + "name": "PyCRAM vscode devcontainer", + "image": "pycram/pycram:dev", + "features": { + "ghcr.io/devcontainers/features/git:1": {}, + "ghcr.io/devcontainers/features/sshd:1": {} + }, + "postStartCommand": { + "pip": "pip3 install ipykernel pyjpt", + "git": "git config --global --add safe.directory '*'", + "source setup": "./.devcontainer/script.sh" + }, + "customizations": { + "vscode": { + "extensions": [ + "ms-python.python", + "ms-python.vscode-pylance", + "ms-toolsai.jupyter", + "esbenp.prettier-vscode" + ] + } + } +} diff --git a/.devcontainer/script.sh b/.devcontainer/script.sh new file mode 100644 index 000000000..d45f309ac --- /dev/null +++ b/.devcontainer/script.sh @@ -0,0 +1,7 @@ +#!/bin/bash + +set -e + +source /opt/ros/overlay_ws/devel/setup.bash + +exec "$@" \ No newline at end of file diff --git a/.github/workflows/new-pycram-ci.yml b/.github/workflows/new-pycram-ci.yml new file mode 100644 index 000000000..1fa0f8839 --- /dev/null +++ b/.github/workflows/new-pycram-ci.yml @@ -0,0 +1,73 @@ +name: pycram_docker_ci +defaults: + run: + shell: bash -ieo pipefail {0} + +on: + push: + branches: + - dev + - master + pull_request: + branches: + - master + - dev + workflow_dispatch: # For manual debugging + inputs: + debug_enabled: + type: boolean + required: false + default: false + description: "Run tmate session" + +jobs: + build_and_run_tests: + runs-on: ubuntu-20.04 + container: + image: "pycram/pycram:dev" + steps: + - name: Checkout PyCRAM + uses: actions/checkout@v3 + with: + path: "ros/src/pycram" + repository: ${{ github.repository }} + ref: ${{ github.ref }} + submodules: "recursive" + + # For debugging + - name: Setup tmate session + uses: mxschmitt/action-tmate@v3 + if: ${{ github.event_name == 'workflow_dispatch' && inputs.debug_enabled }} + + - name: Update PyCRAM source files + run: | + rm -rf /opt/ros/overlay_ws/src/pycram/* + cd /opt/ros/overlay_ws/src/pycram + rm -rf .git .github .gitignore .gitmodules .readthedocs.yaml + mv /__w/${{ github.event.repository.name }}/${{ github.event.repository.name }}/ros/src/pycram /opt/ros/overlay_ws/src + + - name: Remake workspace & start roscore + run: | + sudo -s + source /opt/ros/noetic/setup.bash + cd /opt/ros/overlay_ws + catkin_make + source /opt/ros/overlay_ws/devel/setup.bash + roslaunch pycram ik_and_description.launch & + + - name: Install python dependencies + run: | + pip3 install --upgrade pip --root-user-action=ignore + cd /opt/ros/overlay_ws/src/pycram + pip3 install -r requirements.txt + pip3 install -r requirements-resolver.txt + + - name: Install pytest & pyjpt + run: | + pip3 install --ignore-installed pytest pyjpt + + - name: Run tests + run: | + source /opt/ros/overlay_ws/devel/setup.bash + roscd pycram + pytest -v test diff --git a/.github/workflows/pycram-ci.yml b/.github/workflows/pycram-ci.yml deleted file mode 100644 index c7bf4db3c..000000000 --- a/.github/workflows/pycram-ci.yml +++ /dev/null @@ -1,88 +0,0 @@ -name: CI standalone -defaults: - run: - shell: bash -ieo pipefail {0} -on: - push: - branches: - - dev - - master - pull_request: - branches: - - master - - dev -jobs: - Build_and_run_Tests: - runs-on: ubuntu-20.04 - steps: - - name: Checkout pycram - uses: actions/checkout@v3 - with: - path: 'ros_ws/src/pycram' - repository: ${{github.repository}} - ref: ${{github.ref}} - submodules: recursive - - - name: Checkout iai_maps - uses: actions/checkout@v3 - with: - path: 'ros_ws/src/iai_maps' - repository: code-iai/iai_maps - ref: master - - name: Checkout iai_robots - uses: actions/checkout@v3 - with: - path: 'ros_ws/src/iai_robots' - repository: code-iai/iai_robots - ref: master - - name: Checkout pr2_common - uses: actions/checkout@v3 - with: - path: 'ros_ws/src/pr2_common' - repository: PR2/pr2_common - ref: master - - name: Checkout kdl_ik_service - uses: actions/checkout@v3 - with: - path: 'ros_ws/src/kdl_ik_service' - repository: cram2/kdl_ik_service - ref: master - - name: Checkout pr2_kinematics - uses: actions/checkout@v3 - with: - path: 'ros_ws/src/pr2_kinematics' - repository: PR2/pr2_kinematics - ref: kinetic-devel - - name: install ros and deps - uses: betwo/github-setup-catkin@master - env: - ACTIONS_ALLOW_UNSECURE_COMMANDS: true - with: - # Version range or exact version of ROS version to use, using SemVer's version range syntax. - ros-version: noetic - build-tool: 'catkin_tools' - # Root directory of the catkin workspace - workspace: $GITHUB_WORKSPACE/ros_ws - - name: build and source workspace - run: | - cd ros_ws - catkin_make - echo 'export ROS_HOSTNAME=localhost' >> ~/.bashrc - echo 'source $GITHUB_WORKSPACE/ros_ws/devel/setup.bash' >> ~/.bashrc - - name: Install requirements - run: | - cd $GITHUB_WORKSPACE/ros_ws/src/pycram - sudo pip3 install -r requirements.txt - - name: upgrade numpy - run: | - sudo pip3 install --upgrade numpy - - name: install additional requirements - run: | - sudo pip3 install pytest pyjpt mlflow - - name: start roscore - run: | - roslaunch pycram ik_and_description.launch & - - name: Run Tests - run: | - roscd pycram - pytest -v test diff --git a/.github/workflows/reusable-sphinx-build.yml b/.github/workflows/reusable-sphinx-build.yml index d9de9b353..c6353b831 100644 --- a/.github/workflows/reusable-sphinx-build.yml +++ b/.github/workflows/reusable-sphinx-build.yml @@ -4,6 +4,10 @@ on: push: branches: - dev + pull_request: + branches: + - master + - dev # ---------------------------------------------------------------------------------------------------------------------- diff --git a/.github/workflows/update-docker-image.yml b/.github/workflows/update-docker-image.yml new file mode 100644 index 000000000..8c6686c2c --- /dev/null +++ b/.github/workflows/update-docker-image.yml @@ -0,0 +1,31 @@ +name: update_docker_image +on: + push: + branches: + - master + - dev + paths: + - 'requirements.txt' +# only run when a commit has changes in the requirements.txt file + +jobs: + build_and_push_docker_image: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Set up Docker Buildx + id: buildx + uses: docker/setup-buildx-action@v3 + + - name: log into Docker Hub #Set repository secrets in github secrets + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_PASS }} + + - name: Build and push + uses: docker/build-push-action@v5 + with: + context: ./docker + push: true + tags: ${{ vars.DOCKER_IMAGE }} diff --git a/.gitmodules b/.gitmodules index 63abede05..a87f5a181 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,6 +1,4 @@ [submodule "src/neem_interface_python"] path = src/neem_interface_python url = https://github.com/Tigul/neem_interface_python -[submodule "src/macropy"] - path = src/macropy - url = https://github.com/Tigul/macropy.git + diff --git a/README.md b/README.md index 3e127326d..c243da496 100644 --- a/README.md +++ b/README.md @@ -92,12 +92,3 @@ how to do that take a look at the respective `README` file. If you encounter some error please first take a look at the [troubleshooting](https://pycram.readthedocs.io/en/latest/troubleshooting.html) section and see if the error is mentioned there. - -## Authors - -* **Jonas Dech** -* **Andy Augsten** -* **Dustin Augsten** -* **Christopher Pollok** -* **Thomas Lipps** -* **Benjamin Alt** diff --git a/binder/Dockerfile b/binder/Dockerfile new file mode 100644 index 000000000..61e70c19e --- /dev/null +++ b/binder/Dockerfile @@ -0,0 +1,36 @@ +FROM intel4coro/base-notebook:20.04-noetic-full-xpra + +# Set environment +ENV PATH=$PATH:/home/user/.local/bin +ENV PYCRAM_WS=/home/${NB_USER}/workspace/ros +WORKDIR ${PYCRAM_WS}/src/ +COPY --chown=${NB_USER}:users . pycram/ +RUN vcs import --input pycram/binder/pycram-http.rosinstall --recursive + +RUN pip install --requirement ${PYCRAM_WS}/src/pycram/binder/requirements.txt --user + +COPY --chown=${NB_USER}:users binder/me ${PYCRAM_WS}/src/me + +USER root +RUN apt-get update + +# Build pycram workspace +WORKDIR ${PYCRAM_WS} +USER root +RUN rosdep update \ + && rosdep install -y --ignore-src --from-paths ./ -r \ + && rosdep fix-permissions +USER ${NB_USER} +RUN catkin build + +RUN pip install service_identity + +# Jupyter Config +COPY --chown=${NB_USER}:users binder/jupyter-config.json /opt/conda/share/jupyter/lab/settings/overrides.json + +WORKDIR ${PYCRAM_WS}/src/pycram +RUN git config --global --add safe.directory ${PWD} +COPY --chown=${NB_USER}:users binder/entrypoint.sh / +ENTRYPOINT ["/entrypoint.sh"] +CMD ["jupyter", "lab", "--allow-root", "--NotebookApp.token=''", "--no-browser", "--ip=0.0.0.0"] +RUN pip install https://raw.githubusercontent.com/yxzhan/jupyterlab-rviz/master/dist/jupyterlab_rviz-0.3.1.tar.gz diff --git a/binder/README.md b/binder/README.md new file mode 100644 index 000000000..b10281a0b --- /dev/null +++ b/binder/README.md @@ -0,0 +1,462 @@ + +

Table of Contents

+ +

+ +1. [Binder](#binder) +2. [Project Integration](#ProjectIntegration) + 1. [Docker Foundation](#dockerbasics) + + 1. [Dockerfile](#dockerfile) + 2. [docker-compose.yml](#compose) + 3. [entrypoint.sh](#entry) + 2. [webapp.json](#webapps) + 1. [Custom RvizWeb configuration](#rvizweb) + 2. [XPRA](#xpra) + +3. [Tutorial](#tutorial) + 1. [Pick up object with Visualization](#pickup) + +

+ + + +

+ Binder +

+ + +> BinderHub is a kubernetes-based cloud service that allows users to share reproducible interactive computing environments from code repositories. It is the primary technology behind [mybinder.org](mybinder.org). + +On binder it is possible to build configured projects and run those in a virtual environment. One simple way to configure projects is with Docker. +However building projects might need a lot of resources depending on the projects size. This might lead to problems with the binder instance at [mybinder.org](mybinder.org) as the resources are limited to about 1 - 2 GB. The project [intel4coro](https://www.uni-bremen.de/zmml/projekte/intel4coro) runs a server at [binder.intel4coro](https://binder.intel4coro.de/) to launch projects that require more resources. Already built projects are saved and can be launched anytime without the need to build again. However when the project slightly changed (e.g. git commits) it will need to build again. + + + +When a project is built, a link can be used to share this Hub in its default configuration: + +

+ +

+ + +It is also possible to open a specific file by default when clicking on the link, which can be useful when sharing specific demos. To do this, right click the file that should open at startup and click Copy Shareable Link : + +

+ +

+ + +
+

+ Project Integration +

+ +
+

+ Docker Fundamentals +

+
+ + +
+

Dockerfile

+ +

+ +1. Setup base system + +The Dockerfile describes how the system will be set it up. A base system is defined at first to set the desired distribution as well as other predefined requirements. This is done with the following statement: + +`FROM intel4coro/base-notebook:20.04-noetic-full-xpra` + +After that you can prepare the required dependencies for the specific Docker/Binder in this file. The following steps contain the Dockerfile of this repository as an example. If you want to build a Binderhub using pycram, you can just paste the code blocks for the wanted steps into your Dockerfile: + +

+ + +2. Setup for pycram +
+To setup a pycram workspace with docker it is neccessary to clone the respective repositories for that. For this simply create a rosinstall file to clone all at once. A reference for this can be this
rosinstall file. This differs from the standard rosinstall for pycram since the intitialization of submoudles needs to be done seperately. +
+ +``` +ENV PATH=$PATH:/home/user/.local/bin +ENV PYCRAM_WS=/home/${NB_USER}/workspace/ros +WORKDIR ${PYCRAM_WS}/src/ +COPY --chown=${NB_USER}:users . pycram/ +RUN vcs import --input pycram/binder/pycram-http.rosinstall --recursive +``` + +
+ +3. Clone pycram into workspace + +``` +RUN cd pycram \ + && git submodule update --init \ + && git clone https://github.com/Tigul/neem_interface_python.git src/neem_interface_python \ + && cd src/neem_interface_python \ + && git clone https://github.com/benjaminalt/neem-interface.git src/neem-interface + +RUN pip install --requirement ${PYCRAM_WS}/src/pycram/requirements.txt --user +RUN pip install --requirement ${PYCRAM_WS}/src/pycram/src/neem_interface_python/requirements.txt --user \ + && pip cache purge +``` + +
+ +4. Build pycram workspace + +``` +WORKDIR ${PYCRAM_WS} +USER root +RUN rosdep update \ + && rosdep install -y --ignore-src --from-paths ./ -r \ + && rosdep fix-permissions +USER ${NB_USER} +RUN catkin build +``` + + +
+ + +5. Start entrypoint.sh + +``` +WORKDIR ${PYCRAM_WS}/src/pycram +RUN git config --global --add safe.directory ${PWD} +COPY --chown=${NB_USER}:users binder/entrypoint.sh / +ENTRYPOINT ["/entrypoint.sh"] +CMD ["start-notebook.sh"] +RUN pip install https://raw.githubusercontent.com/yxzhan/jupyterlab-rviz/master/dist/jupyterlab_rviz-0.3.1.tar.gz +``` + + + +

+ + +
  • docker-compose.yml

    +

    +To specify the the Docker image a compose file should be defined as a yml file. This will configure required capabilites such as the location of the Dockerfile and the entrypoint, permissions and the necessary drivers. This project used the following compose file, saved as docker-compose.yml: +

    + +``` +version: '3' +services: + pycram: + image: pycram:binder-xpra + build: + context: ../ + dockerfile: ./binder/Dockerfile + stdin_open: true + tty: true + ports: + - 8888:8888 + privileged: true + # user: root + command: jupyter lab --allow-root --NotebookApp.token='' --no-browser --ip=0.0.0.0 + entrypoint: ["/home/jovyan/work/binder/entrypoint.sh"] + volumes: + - ../:/home/jovyan/work + - /tmp/.X11-unix:/tmp/.X11-unix:rw + environment: + - DISPLAY + - QT_X11_NO_MITSHM=1 + - NVIDIA_DRIVER_CAPABILITIES=all + deploy: + resources: + reservations: + devices: + - driver: nvidia + count: all + capabilities: [gpu] +``` +

  • +

    + + +
    +
  • entrypoint.sh

    +
    + +The entrypoint is usually executed when the built system should start. This will set some defaults as sourced workspaces or files launched by ros. An example for this would be the following code as a file called entrypoint.sh: + +``` +#!/bin/bash + +source ${PYCRAM_WS}/devel/setup.bash +roscore & +roslaunch --wait rvizweb rvizweb.launch config_file:=${PYCRAM_WS}/src/pycram/binder/rvizweb_config.json & +roslaunch --wait pycram ik_and_description.launch & + +cp ${PYCRAM_WS}/src/pycram/binder/webapps.json ${PYCRAM_WS}/src/rvizweb/webapps/app.json + +exec "$@" +``` + +In short this does the following instructions: +- source pycram workspace +- start ros-specifics such as + - roscore + - launch rvizweb with a custom config file + - launch the ik solver for pycram +- copy webapps file and execute previous commands +
  • + +
    + + +

    + Adding Webapps +

    +
    +This file defines the available apps for this Binderhub as a json file. The main parameters for the respective entries are: +

    + +- ```name```: Name of the App +- ```title```: Title of the App +- ```icon```: Link to a picture as svg +- ```url```: url to the index of the build folder +- ```start```: Defines if the app should run at start. It's optional and states ```true``` if it should. +- ```mode```: Describe where the application window should be. Examples: ```split-left``` or ```split-right``` + +The webapps contained for this project are the following: + +- RvizWeb +- XPRA +- rosgraph +- rosboard +- webviz + +RvizWeb and XPRA are also started by default to simplify the process of running a jupyter notebook. The following is an example of the existent json file `webapps.json` which configures the described environment: + +``` +[ + { + "name": "rvizweb", + "title": "Rvizweb", + "icon": "proxy/8001/rvizweb/webapps/r.svg", + "url": "proxy/8001/rvizweb/webapps/rvizweb/build/www/index.html", + "start": true, + "mode": "split-left" + }, + { + "name": "XPRA", + "title": "Xpra Desktop", + "icon": "proxy/8001/rvizweb/webapps/xpra-logo.svg", + "url": "xprahtml5/index.html", + "start": true, + "mode": "split-right" + }, + + { + "name": "rosgraph", + "title": "Ros Graph", + "icon": "proxy/8001/rvizweb/webapps/o.svg", + "url": "proxy/8001/rvizweb/webapps/ros-node-graph/build/index.html" + }, + { + "name": "rosboard", + "title": "ROSBoard", + "icon": "proxy/8001/rvizweb/webapps/s.svg", + "url": "proxy/18888/index.html" + }, + { + "name": "webviz", + "title": "Webviz", + "icon": "proxy/8001/rvizweb/webapps/webviz/icon.svg", + "url": "proxy/8001/rvizweb/webapps/webviz/index.html" + } +] +``` + + + +

  • Custom RvizWeb configuration

    + +Adding an RvizWeb is relative similar to adding a local rviz configuration. Although the config file structure differ (RvizWeb uses json and not the rviz format) which is why the config file needs to be created using RvizWeb. When first setting up a config, this can then be copied by clicking on Load Config: + + +

    + +

    + +After that a window similar to the following image should open: + +

    + +

    + +This can then be copied into a local file. Delete lines containing the parameters url, colladaServer, and videoServer as they change with every startup and will be assigned automatically. + + Note: When using a custom RvizWeb configuration, ensure that the name of the file match with the config file specified in the [entrypoint](#entry). + +
  • + + +
  • XPRA

    +XPRA is a remote display server which can be used to demonstrate the execution when using the Bulletworld. In the shown webapps file, it is a starting window on the left by default + + +
  • + + +
    + + + + +
    +

    + Tutorials +

    + + +
    +

    + Pick up Example +

    + +A short example is shown here with Initializing a world with a robot, spawning and then picking up an object. This is written in an jupyter notebook in the file
    pick-test.ipynb. There is also one cell which can create an TFBroadcaster, a JointPublisher and a VisualizationMarkerPublisher + +
  • + Initialize World, Robot and object +

  • +When executing the initialization, the Bulletworld should open on XPRA and every action can be seen there as well. +This is seperated into 3 different cells for clarification on what each action does. Alternatively the Bulletworld can also be initialized with a Parameter 'DIRECT' if working with XPRA is not desired. This will not open any windows and execute everything without direct visualization. Although it is possible to use the TFBroadcaster, JointPublisher or VisualizationMarker to visualize the current execution in RvizWeb + +The code for this is seen below: +``` +from rospy import get_param +from pycram.bullet_world import BulletWorld, Object +from pycram.pose import Pose + +from pycram.process_module import simulated_robot, with_simulated_robot +from pycram.language import macros, par +from pycram.designators.location_designator import * +from pycram.designators.action_designator import * +from pycram.enums import Arms +from pycram.designators.object_designator import * +from pycram.designators.object_designator import BelieveObject +from pycram.plan_failures import IKError +import math + +try: + robot = get_param('/nbparam_robot') + environment = get_param('/nbparam_environment') +except Exception as e: + robot = 'pr2' + environment = 'kitchen' + +print(f"Robot: {robot}") +print(f"Environment: {environment}") + +world = BulletWorld() + +# Initialize Robot +robot = Object("pr2", "robot", robot + ".urdf") +robot_desig = ObjectDesignatorDescription(names=["pr2"]).resolve() + +# Create Object +milk = Object("milk", "milk", "milk.stl", pose=Pose([2, 0, 1])) +milk_BO = BelieveObject(names=["milk"]) +``` + +
  • + Creating Several Publisher +

  • + +In case any Publisher is wanted, it is neccessary to prepare a display for that depending on the type of Visualization is desired to use: + +

    + TFBroadcaster +

    + +To set up the TFBroadcaster simply add the display called TF . If you want to visualize all tf-frames, then you do not need to add a prefix. The following picture shows the location of the TF display: + +

    + +

    + +Then the following line of code adds the TFBroadcaster. As soon as this is called, it publishes all available tf-frames: +
    +`broadcaster = TFBroadcaster()` + + + +

    + Joint State Publisher +

    +To set up the Joint State Publisher for a robot add the display called Robot Model . The robot description should be called robot_description. The tf-prefix might variate, the starting prefix so far is simulated/pr2_2. The following picture shows the setup of this display: + +

    + +

    + +Then the following line of code adds the JointStatePublisher. As soon as this is called, it publishes the joint states under the given name (here: joint_states) +
    +`joint_publisher = JointStatePublisher("joint_states", 0.1)` + + + +

    + VisualizationMarker +

    +To set up the Visualization add the disply called Marker Array . It is required to set a topic name which is currently /viz_marker. The following picture shows the setup of this display: + +

    + +

    + +Then the following line of code adds the VisualizationMarker. Here all markers should be published under the given name (here: /viz_marker) +
    +`v = VizMarkerPublisher(topic_name='viz_marker')` + + NOTE: This is currently bugged in RvizWeb and needs further investigation. Visualizationmarker does work locally, but only shows a bugged model in RvizWeb. + +
  • + Navigate to Object +

  • + +The navigation to objects does not require any setup specifically for binder so there is no difference in execution: + +``` +with simulated_robot: + ParkArmsAction([Arms.BOTH]).resolve().perform() + + MoveTorsoAction([0.33]).resolve().perform() + + pickup_pose_knife = CostmapLocation(target=milk_BO.resolve(), reachable_for=robot_desig).resolve() + pickup_arm = pickup_pose_knife.reachable_arms[0] + + NavigateAction(target_locations=[pickup_pose_knife.pose]).resolve().perform() + +``` + + +
  • + Pick up object +

  • +Next pick up the object with the left arm. This also does not differ from normal pycram usage: + +``` +with simulated_robot: + PickUpAction(object_designator_description=milk_BO, + arms=["left"], + grasps=["left", "right"]).resolve().perform() +``` + + + + + + + + + + + + diff --git a/binder/Readme/Binder_default.png b/binder/Readme/Binder_default.png new file mode 100644 index 000000000..0da2d6d5b Binary files /dev/null and b/binder/Readme/Binder_default.png differ diff --git a/binder/Readme/Binder_specific_file.png b/binder/Readme/Binder_specific_file.png new file mode 100644 index 000000000..f68fee650 Binary files /dev/null and b/binder/Readme/Binder_specific_file.png differ diff --git a/binder/Readme/JointStatePublisher.png b/binder/Readme/JointStatePublisher.png new file mode 100644 index 000000000..d1f5fa6d2 Binary files /dev/null and b/binder/Readme/JointStatePublisher.png differ diff --git a/binder/Readme/TFBroadcaster.png b/binder/Readme/TFBroadcaster.png new file mode 100644 index 000000000..97056fcc2 Binary files /dev/null and b/binder/Readme/TFBroadcaster.png differ diff --git a/binder/Readme/VisualizationMarker.png b/binder/Readme/VisualizationMarker.png new file mode 100644 index 000000000..f17feb1db Binary files /dev/null and b/binder/Readme/VisualizationMarker.png differ diff --git a/binder/Readme/rvizweb_config.png b/binder/Readme/rvizweb_config.png new file mode 100644 index 000000000..3d5909045 Binary files /dev/null and b/binder/Readme/rvizweb_config.png differ diff --git a/binder/Readme/rvizweb_load_options.png b/binder/Readme/rvizweb_load_options.png new file mode 100644 index 000000000..b02e65df3 Binary files /dev/null and b/binder/Readme/rvizweb_load_options.png differ diff --git a/binder/docker-compose.yml b/binder/docker-compose.yml new file mode 100644 index 000000000..2889040d4 --- /dev/null +++ b/binder/docker-compose.yml @@ -0,0 +1,30 @@ +version: '3' +services: + pycram: + image: pycram:binder-xpra + build: + context: ../ + dockerfile: ./binder/Dockerfile + stdin_open: true + tty: true + ports: + - 8888:8888 + privileged: true + # user: root + working_dir: /home/jovyan/ + command: jupyter lab --allow-root --NotebookApp.token='' --no-browser --ip=0.0.0.0 + entrypoint: ["/home/jovyan/work/binder/entrypoint.sh"] + volumes: + - ../:/home/jovyan/work + - /tmp/.X11-unix:/tmp/.X11-unix:rw + environment: + - DISPLAY + - QT_X11_NO_MITSHM=1 + - NVIDIA_DRIVER_CAPABILITIES=all + deploy: + resources: + reservations: + devices: + - driver: nvidia + count: all + capabilities: [gpu] diff --git a/binder/entrypoint.sh b/binder/entrypoint.sh new file mode 100755 index 000000000..ead7b837f --- /dev/null +++ b/binder/entrypoint.sh @@ -0,0 +1,8 @@ +#!/bin/bash + +source ${PYCRAM_WS}/devel/setup.bash +roscore & +roslaunch --wait rvizweb rvizweb.launch config_file:=${PYCRAM_WS}/src/pycram/binder/rviz_configs/pr2_config.json & +cp ${PYCRAM_WS}/src/pycram/binder/webapps.json ${PYCRAM_WS}/src/rvizweb/webapps/app.json + +xvfb-run exec "$@" diff --git a/binder/jupyter-config.json b/binder/jupyter-config.json new file mode 100644 index 000000000..3ef7c4419 --- /dev/null +++ b/binder/jupyter-config.json @@ -0,0 +1,6 @@ +{ + "@jupyterlab/apputils-extension:themes": { + "theme": "JupyterLab Light", + "theme-scrollbars": true + } +} diff --git a/binder/me/CMakeLists.txt b/binder/me/CMakeLists.txt new file mode 100644 index 000000000..1418db54a --- /dev/null +++ b/binder/me/CMakeLists.txt @@ -0,0 +1,22 @@ +cmake_minimum_required(VERSION 3.0.2) +project(me) + +include_directories( + ${catkin_INCLUDE_DIRS} +) + +execute_process( + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} + COMMAND rm -rf jovyan +) + +execute_process( + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} + COMMAND mkdir -p jovyan/workspace/ros/ +) + +execute_process( + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} + COMMAND ln -s /home/jovyan/workspace/ros/src jovyan/workspace/ros/src +) + diff --git a/binder/me/package.xml b/binder/me/package.xml new file mode 100644 index 000000000..2dea2c92d --- /dev/null +++ b/binder/me/package.xml @@ -0,0 +1,9 @@ + + + me + 100.1.0 + tmp + Apache 2 + me + + diff --git a/binder/pycram-http.rosinstall b/binder/pycram-http.rosinstall new file mode 100644 index 000000000..4ad9ec467 --- /dev/null +++ b/binder/pycram-http.rosinstall @@ -0,0 +1,25 @@ +repositories: + iai_maps: + type: git + url: https://github.com/code-iai/iai_maps.git + version: master + iai_robots: + type: git + url: http://github.com/code-iai/iai_robots.git + version: master + pr2_common: + type: git + url: https://github.com/PR2/pr2_common.git + version: b34703bcca2b07cadbc3777d3c504c232a0c0c28 + kdl_ik_services: + type: git + url: https://github.com/cram2/kdl_ik_service.git + verison: master + pr2_kinematics: + type: git + url: https://github.com/PR2/pr2_kinematics.git + version: kinetic-devel + orocos_kinematics_dynamics: + type: git + url: https://github.com/orocos/orocos_kinematics_dynamics.git + version: v1.5.1 diff --git a/binder/requirements.txt b/binder/requirements.txt new file mode 100644 index 000000000..81ce6a51d --- /dev/null +++ b/binder/requirements.txt @@ -0,0 +1,18 @@ +gitpython>=3.1.37 +pybullet~=3.2.5 +rospkg~=1.4.0 +roslibpy~=1.2.1 +# rospy~=1.14.11 +pathlib~=1.0.1 +numpy>=1.21.1 +pytransform3d~=1.9.1 +# tf~=1.12.1 +# actionlib~=1.12.1 +urdf-parser-py~=0.0.3 +graphviz +anytree>=2.8.0 +SQLAlchemy>=2.0.9 +tqdm==4.66.3 +psutil==5.9.7 +lxml==4.9.1 +rdflib==7.0.0 diff --git a/binder/rviz_configs/pr2_config.json b/binder/rviz_configs/pr2_config.json new file mode 100644 index 000000000..27a8a3f2d --- /dev/null +++ b/binder/rviz_configs/pr2_config.json @@ -0,0 +1,72 @@ +{ + "globalOptions": { + "background": "#111111", + "colladaLoader": "collada2", + "fixedFrame": "simulated/map" + }, + "viewerOptions": { + "camera": { + "position": { + "x": 8.8, + "y": 4.5, + "z": 2.7 + } + }, + "cameraControls": { + "center": { + "x": 1, + "y": 2.5, + "z": 0 + } + }, + "directionalLight": { + "position": { + "x": -3, + "y": -3, + "z": 5 + } + } + }, + "sidebarOpened": false, + "displays": [ + { + "isShown": true, + "name": "Grid", + "options": { + "cellSize": "1", + "color": "#eeeeee", + "numCells": "20" + }, + "type": "grid" + }, + { + "isShown": false, + "name": "Robot model", + "options": { + "param": "robot_description", + "tfPrefix": "simulated/pr2" + }, + "type": "urdf" + }, + { + "isShown": false, + "name": "Kitchen model", + "options": { + "param": "kitchen_description", + "tfPrefix": "simulated/environment" + }, + "type": "urdf" + }, + + { + "isShown": true, + "name": "Marker array", + "options": { + "topic": "/pycram/viz_marker" + }, + "type": "markerArray" + } + + + ] +} diff --git a/binder/webapps.json b/binder/webapps.json new file mode 100644 index 000000000..5c96ac83e --- /dev/null +++ b/binder/webapps.json @@ -0,0 +1,37 @@ +[ + { + "name": "rvizweb", + "title": "Rvizweb", + "icon": "proxy/8001/rvizweb/webapps/r.svg", + "url": "proxy/8001/rvizweb/webapps/rvizweb/build/www/index.html", + "start": true, + "mode": "split-right" + }, + { + "name": "XPRA", + "title": "Xpra Desktop", + "icon": "proxy/8001/rvizweb/webapps/xpra-logo.svg", + "url": "xprahtml5/index.html", + "start": true, + "mode": "split-left" + }, + + { + "name": "rosgraph", + "title": "Ros Graph", + "icon": "proxy/8001/rvizweb/webapps/o.svg", + "url": "proxy/8001/rvizweb/webapps/ros-node-graph/build/index.html" + }, + { + "name": "rosboard", + "title": "ROSBoard", + "icon": "proxy/8001/rvizweb/webapps/s.svg", + "url": "proxy/18888/index.html" + }, + { + "name": "webviz", + "title": "Webviz", + "icon": "proxy/8001/rvizweb/webapps/webviz/icon.svg", + "url": "proxy/8001/rvizweb/webapps/webviz/index.html" + } +] diff --git a/demos/pycram_bullet_world_demo/demo.py b/demos/pycram_bullet_world_demo/demo.py index c19ad349c..ab15c4483 100644 --- a/demos/pycram_bullet_world_demo/demo.py +++ b/demos/pycram_bullet_world_demo/demo.py @@ -1,19 +1,28 @@ +from pycram.worlds.bullet_world import BulletWorld from pycram.designators.action_designator import * from pycram.designators.location_designator import * from pycram.designators.object_designator import * -from pycram.pose import Pose -from pycram.bullet_world import BulletWorld, Object +from pycram.datastructures.enums import ObjectType +from pycram.datastructures.pose import Pose from pycram.process_module import simulated_robot, with_simulated_robot -from pycram.enums import ObjectType +from pycram.object_descriptors.urdf import ObjectDescription +from pycram.world_concepts.world_object import Object +from pycram.datastructures.dataclasses import Color -world = BulletWorld() -robot = Object("pr2", ObjectType.ROBOT, "pr2.urdf", pose=Pose([1, 2, 0])) -apartment = Object("apartment", ObjectType.ENVIRONMENT, "apartment.urdf") +extension = ObjectDescription.get_file_extension() -milk = Object("milk", ObjectType.MILK, "milk.stl", pose=Pose([2.5, 2, 1.02]), color=[1, 0, 0, 1]) -cereal = Object("cereal", ObjectType.BREAKFAST_CEREAL, "breakfast_cereal.stl", pose=Pose([2.5, 2.3, 1.05]), color=[0, 1, 0, 1]) -spoon = Object("spoon", ObjectType.SPOON, "spoon.stl", pose=Pose([2.4, 2.2, 0.85]), color=[0, 0, 1, 1]) -bowl = Object("bowl", ObjectType.BOWL, "bowl.stl", pose=Pose([2.5, 2.2, 1.02]), color=[1, 1, 0, 1]) +world = BulletWorld() +robot = Object("pr2", ObjectType.ROBOT, f"pr2{extension}", pose=Pose([1, 2, 0])) +apartment = Object("apartment", ObjectType.ENVIRONMENT, f"apartment{extension}") + +milk = Object("milk", ObjectType.MILK, "milk.stl", pose=Pose([2.5, 2, 1.02]), + color=Color(1, 0, 0, 1)) +cereal = Object("cereal", ObjectType.BREAKFAST_CEREAL, "breakfast_cereal.stl", + pose=Pose([2.5, 2.3, 1.05]), color=Color(0, 1, 0, 1)) +spoon = Object("spoon", ObjectType.SPOON, "spoon.stl", pose=Pose([2.4, 2.2, 0.85]), + color=Color(0, 0, 1, 1)) +bowl = Object("bowl", ObjectType.BOWL, "bowl.stl", pose=Pose([2.5, 2.2, 1.02]), + color=Color(1, 1, 0, 1)) apartment.attach(spoon, 'cabinet10_drawer_top') pick_pose = Pose([2.7, 2.15, 1]) @@ -52,7 +61,8 @@ def move_and_detect(obj_type): # Finding and navigating to the drawer holding the spoon handle_desig = ObjectPart(names=["handle_cab10_t"], part_of=apartment_desig.resolve()) - drawer_open_loc = AccessingLocation(handle_desig=handle_desig.resolve(), robot_desig=robot_desig.resolve()).resolve() + drawer_open_loc = AccessingLocation(handle_desig=handle_desig.resolve(), + robot_desig=robot_desig.resolve()).resolve() NavigateAction([drawer_open_loc.pose]).resolve().perform() @@ -67,11 +77,7 @@ def move_and_detect(obj_type): pickup_arm = "left" if drawer_open_loc.arms[0] == "right" else "right" PickUpAction(spoon_desig, [pickup_arm], ["top"]).resolve().perform() - ParkArmsAction([Arms.BOTH]).resolve().perform() - - close_loc = drawer_open_loc.pose - close_loc.position.y += 0.1 - NavigateAction([close_loc]).resolve().perform() + ParkArmsAction([Arms.LEFT if pickup_arm == "left" else Arms.RIGHT]).resolve().perform() CloseAction(object_designator_description=handle_desig, arms=[drawer_open_loc.arms[0]]).resolve().perform() @@ -88,4 +94,3 @@ def move_and_detect(obj_type): PlaceAction(spoon_desig, [spoon_target_pose], [pickup_arm]).resolve().perform() ParkArmsAction([Arms.BOTH]).resolve().perform() - diff --git a/demos/pycram_ur5_demo/demo.py b/demos/pycram_ur5_demo/demo.py index 2c6d12a08..a9839ea4d 100644 --- a/demos/pycram_ur5_demo/demo.py +++ b/demos/pycram_ur5_demo/demo.py @@ -4,9 +4,9 @@ from rospkg import RosPack import pybullet as pb -from pycram import robot_description -from pycram.bullet_world import BulletWorld, Object -from pycram.pose import Pose +from pycram.worlds.bullet_world import BulletWorld +from pycram.world import Object +from pycram.datastructures.pose import Pose from pycram.ros.force_torque_sensor import ForceTorqueSensor from pycram.ros.joint_state_publisher import JointStatePublisher from pycram.ros.tf_broadcaster import TFBroadcaster @@ -37,7 +37,7 @@ lab = Object("kitchen", "environment", kitchen_urdf_path) robot = Object("ur", "robot", robot_urdf_path, pose=SPAWNING_POSES["robot"]) cereal = Object("cereal", "object", os.path.join(RESOURCE_DIR, "breakfast_cereal.stl"), - pose=SPAWNING_POSES["cereal"]) + pose=SPAWNING_POSES["cereal"]) BulletWorld.robot = robot tf_broadcaster = TFBroadcaster("projection", "odom", 1.0) diff --git a/demos/pycram_virtual_building_demos/README.md b/demos/pycram_virtual_building_demos/README.md new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/demos/pycram_virtual_building_demos/README.md @@ -0,0 +1 @@ + diff --git a/demos/pycram_virtual_building_demos/setup/launch_robot.py b/demos/pycram_virtual_building_demos/setup/launch_robot.py new file mode 100644 index 000000000..eaa9a08a8 --- /dev/null +++ b/demos/pycram_virtual_building_demos/setup/launch_robot.py @@ -0,0 +1,52 @@ +import time +import roslaunch +import rospy +import rospkg + + +def launch_pr2(): + """ + Method to launch PR2 on the parameter server and start the ik service + """ + # name = 'pr2' + # urdf = 'pr2.urdf' + executable = 'pr2_standalone.launch' + launch_robot(executable) + + +# For future work / robots +# def launch_hsrb(): +# # name = 'hsrb' +# # urdf = 'hsrb.urdf' +# executable = 'hsrb_standalone.launch' +# launch_robot(executable) + + +# def launch_armar6(): +# # name = 'armar6' +# # urdf = 'armar6.urdf' +# executable = 'armar6_standalone.launch' +# launch_robot(executable) + + +def launch_robot(launch_file, package='pycram', launch_folder='/launch/'): + """ + General method to start a specified launch file with given parameters. + Default location for launch files here is in the folder 'launch' inside the pycram package + + :param launch_file: File name of the launch file + :param package: Name of the package + :param launch_folder: Location of the launch file inside the package + """ + + rospath = rospkg.RosPack() + + uuid = roslaunch.rlutil.get_or_generate_uuid(None, False) + roslaunch.configure_logging(uuid) + launch = roslaunch.parent.ROSLaunchParent(uuid, [rospath.get_path(package) + launch_folder + launch_file]) + launch.start() + + rospy.loginfo(f'{launch_file} started') + + # Wait for ik server to launch + time.sleep(2) diff --git a/doc/source/conf.py b/doc/source/conf.py index 2c9f82319..177109f8b 100644 --- a/doc/source/conf.py +++ b/doc/source/conf.py @@ -196,7 +196,7 @@ # Example Thumbnail config nbsphinx_thumbnails = { - 'notebooks/bullet_world': os.path.abspath("notebooks/thumbnails/bullet_world.png"), + 'notebooks/world': os.path.abspath("notebooks/thumbnails/bullet_world.png"), 'notebooks/minimal_task_tree': os.path.abspath("notebooks/thumbnails/tree.png"), 'notebooks/action_designator': os.path.abspath("notebooks/thumbnails/action_designator.png"), 'notebooks/motion_designator': os.path.abspath("notebooks/thumbnails/motion_designator.png"), @@ -210,7 +210,7 @@ autosectionlabel_prefix_document = True -# autoapi_keep_files = True +autoapi_keep_files = True suppress_warnings = [] diff --git a/doc/source/designators.rst b/doc/source/designators.rst index d07af0a5e..08ec4d8f4 100644 --- a/doc/source/designators.rst +++ b/doc/source/designators.rst @@ -45,7 +45,7 @@ action looks like this: .. code-block:: python - NavigateAction.Action(robot_position=((0.0, 0.0, 0.0), (0.0, 0.0, 0.0, 1.0)), target_location=[[1, 0, 0], [0, 0, 0, 1]]) + NavigateActionPerformable(robot_position=((0.0, 0.0, 0.0), (0.0, 0.0, 0.0, 1.0)), target_location=[[1, 0, 0], [0, 0, 0, 1]]) A visual representation of the whole idea of designator and designator descriptions can be diff --git a/doc/source/examples.rst b/doc/source/examples.rst index 9cd424b2f..f4cc7bc1d 100644 --- a/doc/source/examples.rst +++ b/doc/source/examples.rst @@ -27,14 +27,16 @@ Misc notebooks/bullet_world notebooks/minimal_task_tree notebooks/pose - notebooks/custom_resolver + notebooks/improving_actions + notebooks/language + notebooks/local_transformer Interface Examples ================== .. nbgallery:: - notebooks/giskard - notebooks/robokudo + notebooks/interface_examples/giskard + notebooks/interface_examples/robokudo Object Relational Mapping ========================= @@ -56,14 +58,11 @@ seen in :meth:`pycram.task.TaskTreeNode.to_sql` and :meth:`pycram.task.TaskTreeN When using the ORM to record the experiments a MetaData instance is created. For a clean data management it is important to fill out the description. For this, check the documentation of :meth:`pycram.orm.base.ProcessMetaData`. -Examples --------- +ORM Examples +------------ .. nbgallery:: notebooks/orm_example - - notebooks/orm_querying_examples - notebooks/migrate_neems - + notebooks/orm_querying_examples diff --git a/doc/source/index.rst b/doc/source/index.rst index c8ab43941..fb1161d2d 100644 --- a/doc/source/index.rst +++ b/doc/source/index.rst @@ -52,30 +52,48 @@ The code for this plan can be seen below. .. code-block:: python - @with_simulated_robot - def plan(): - MotionDesignator(MoveArmJointsMotionDescription(left_arm_config='park', - right_arm_config='park')).perform() + from pycram.bullet_world import BulletWorld, Object + from pycram.process_module import simulated_robot + from pycram.designators.motion_designator import * + from pycram.designators.location_designator import * + from pycram.designators.action_designator import * + from pycram.designators.object_designator import * + from pycram.enums import ObjectType - MotionDesignator(MoveMotionDescription(target=moving_targets[robot_name]["sink"][0], - orientation=moving_targets[robot_name]["sink"][1])).perform() + world = BulletWorld() + kitchen = Object("kitchen", ObjectType.ENVIRONMENT, "kitchen.urdf") + robot = Object("pr2", ObjectType.ROBOT, "pr2.urdf") + cereal = Object("cereal", ObjectType.BREAKFAST_CEREAL, "breakfast_cereal.stl", position=[1.4, 1, 0.95]) - det_obj = MotionDesignator(DetectingMotionDescription(object_type="milk")).perform() + cereal_desig = ObjectDesignatorDescription(names=["cereal"]) + kitchen_desig = ObjectDesignatorDescription(names=["kitchen"]) + robot_desig = ObjectDesignatorDescription(names=["pr2"]).resolve() - MotionDesignator(PickUpMotionDescription(object=milk, arm="left", grasp="front")).perform() + with simulated_robot: + ParkArmsAction([Arms.BOTH]).resolve().perform() + MoveTorsoAction([0.3]).resolve().perform() - MotionDesignator(MoveMotionDescription(target=moving_targets[robot_name]["island"][0], - orientation=moving_targets[robot_name]["island"][1])).perform() + pickup_pose = CostmapLocation(target=cereal_desig.resolve(), reachable_for=robot_desig).resolve() + pickup_arm = pickup_pose.reachable_arms[0] - MotionDesignator(PlaceMotionDescription(object=milk, target=[-0.9, 1, 0.93], arm="left")).perform() + NavigateAction(target_locations=[pickup_pose.pose]).resolve().perform() - MotionDesignator(MoveArmJointsMotionDescription(left_arm_config='park', - right_arm_config='park')).perform() + PickUpAction(object_designator_description=cereal_desig, arms=[pickup_arm], grasps=["front"]).resolve().perform() - MotionDesignator(MoveMotionDescription(target=[0.0, 0.0, 0], - orientation=[0, 0, 0, 1])).perform() + ParkArmsAction([Arms.BOTH]).resolve().perform() + place_island = SemanticCostmapLocation("kitchen_island_surface", kitchen_desig.resolve(), cereal_desig.resolve()).resolve() + + place_stand = CostmapLocation(place_island.pose, reachable_for=robot_desig, reachable_arm=pickup_arm).resolve() + + NavigateAction(target_locations=[place_stand.pose]).resolve().perform() + + PlaceAction(cereal_desig, target_locations=[place_island.pose], arms=[pickup_arm]).resolve().perform() + + ParkArmsAction([Arms.BOTH]).resolve().perform() + + world.exit() Tutorials --------- diff --git a/doc/source/installation.rst b/doc/source/installation.rst index 32625f5b1..49498a283 100644 --- a/doc/source/installation.rst +++ b/doc/source/installation.rst @@ -112,6 +112,7 @@ Then install the Python packages in the requirements.txt file Building your ROS workspace =========================== +.. _build-ws: Building and sourcing your ROS workspace using catkin compiles all ROS packages and manages the appending to the respective PATH variables. This is necessary to be able to import PyCRAM via the Python import system and to find the @@ -160,6 +161,7 @@ After installing pandoc, install sphinx on your device. sudo apt install python3-sphinx + Install the requirements in your python interpreter. .. code-block:: shell @@ -180,27 +182,67 @@ Show the index. firefox build/html/index.html + Setting up PyCRAM with PyCharm ============================== -Setting up PyCharm with packages that rely on rospy is non trivial. Follow this guide to get correct syntax highlighting -for the PyCRAM project. +Setting up PyCharm with packages that rely on rospy is non trivial. Follow this guide to get correct syntax highlighting for the PyCRAM project. + +Install PyCharm Professional +---------------------------- First, `install PyCharm Professional `_. -Next, if you have virtual environments that you want to use, you need to make sure that they have rospy available. -If you create a new environment, make sure to include `--system-site-packages` in your creation command. -You can check by activating your environment and calling the import +Create a JetBrains account and verify it for educational purpose. Now you can unlock the PyCharm Professional features in PyCharm. + +The next step will set up the virtual Python environment, so it can be used as a project interpreter in PyCharm. + + +Set up virtualenv +----------------- +.. _virtualenv: + +The virtualenvwrapper allows to manage virtual Python environments, where additional packages can be installed without the risk of breaking the system-wide Python configuration. Install `virtualenvwrapper `_ via pip and set it up. + +.. code-block:: shell + + sudo pip3 install virtualenvwrapper + echo "export WORKON_HOME=~/envs" >> ~/.bashrc + echo "source /usr/local/bin/virtualenvwrapper.sh" >> ~/.bashrc + mkdir -p $WORKON_HOME + source ~/.bashrc + +Create a virtual env based on the workspaces libraries (see build-ws_) and add the `--system-site-packages` to get them properly. The env will be registered in `$WORKON_HOME`. + +.. code-block:: shell + + source ~/workspace/ros/devel/setup.bash + mkvirtualenv pycram --system-site-packages + ls $WORKON_HOME + + +Check if the ROS libraries are available in the virtual env. .. code-block:: shell - workon your_env + workon pycram python -c "import rospy" +If it complains about `python`, install the following, to set `python` to Python 3 by default. + +.. code-block:: shell + + sudo apt install python-is-python3 + +If it finds `python` but complains about missing packages, make sure that the workspace is sourced before creating the virtual env. Also remember to create the virtual env with the `--system-site-packages` flag. + If this returns no errors, you can be sure that rospy is usable in your virtual environment. Next you have to build the -ros workspace including pycram and source it as described in install-pycram_. +ros workspace including pycram and source it as described in build-ws_. + +Configure PyCharm +----------------- -After that you have to start PyCharm from the terminal via +Always start PyCharm from the terminal via .. code-block:: shell @@ -212,6 +254,7 @@ or ~/pycharm/bin/pycharm.sh + Select **File | Open** and select the root folder of the PyCRAM package. Next go to **File | Settings | Project: pycram | Python Interpreter** and set up your virtual environment with rospy and the sourced workspace available as the python interpreter. @@ -221,6 +264,7 @@ folder as Tests and the resources as Resources. To verify that it works, you can execute any Testcase. + Using IPython as REPL ===================== diff --git a/doc/source/notebooks b/doc/source/notebooks new file mode 120000 index 000000000..da7b19653 --- /dev/null +++ b/doc/source/notebooks @@ -0,0 +1 @@ +../../examples/ \ No newline at end of file diff --git a/doc/source/notebooks/action_designator.ipynb b/doc/source/notebooks/action_designator.ipynb deleted file mode 120000 index d805f8db5..000000000 --- a/doc/source/notebooks/action_designator.ipynb +++ /dev/null @@ -1 +0,0 @@ -../../../examples/action_designator.ipynb \ No newline at end of file diff --git a/doc/source/notebooks/bullet_world.ipynb b/doc/source/notebooks/bullet_world.ipynb deleted file mode 120000 index bdb627d54..000000000 --- a/doc/source/notebooks/bullet_world.ipynb +++ /dev/null @@ -1 +0,0 @@ -../../../examples/bullet_world.ipynb \ No newline at end of file diff --git a/doc/source/notebooks/custom_resolver.ipynb b/doc/source/notebooks/custom_resolver.ipynb deleted file mode 120000 index ecd9fa1f8..000000000 --- a/doc/source/notebooks/custom_resolver.ipynb +++ /dev/null @@ -1 +0,0 @@ -../../../examples/custom_resolver.ipynb \ No newline at end of file diff --git a/doc/source/notebooks/giskard.ipynb b/doc/source/notebooks/giskard.ipynb deleted file mode 120000 index 6d8f4dcef..000000000 --- a/doc/source/notebooks/giskard.ipynb +++ /dev/null @@ -1 +0,0 @@ -../../../examples/interface_examples/giskard.ipynb \ No newline at end of file diff --git a/doc/source/notebooks/intro.ipynb b/doc/source/notebooks/intro.ipynb deleted file mode 120000 index 31a4f6830..000000000 --- a/doc/source/notebooks/intro.ipynb +++ /dev/null @@ -1 +0,0 @@ -../../../examples/intro.ipynb \ No newline at end of file diff --git a/doc/source/notebooks/location_designator.ipynb b/doc/source/notebooks/location_designator.ipynb deleted file mode 120000 index 60e30b0a0..000000000 --- a/doc/source/notebooks/location_designator.ipynb +++ /dev/null @@ -1 +0,0 @@ -../../../examples/location_designator.ipynb \ No newline at end of file diff --git a/doc/source/notebooks/migrate_neems.ipynb b/doc/source/notebooks/migrate_neems.ipynb deleted file mode 120000 index 031ee0a9e..000000000 --- a/doc/source/notebooks/migrate_neems.ipynb +++ /dev/null @@ -1 +0,0 @@ -../../../examples/migrate_neems.ipynb \ No newline at end of file diff --git a/doc/source/notebooks/minimal_task_tree.ipynb b/doc/source/notebooks/minimal_task_tree.ipynb deleted file mode 120000 index 6f3de6889..000000000 --- a/doc/source/notebooks/minimal_task_tree.ipynb +++ /dev/null @@ -1 +0,0 @@ -../../../examples/minimal_task_tree.ipynb \ No newline at end of file diff --git a/doc/source/notebooks/motion_designator.ipynb b/doc/source/notebooks/motion_designator.ipynb deleted file mode 120000 index 74539a9e4..000000000 --- a/doc/source/notebooks/motion_designator.ipynb +++ /dev/null @@ -1 +0,0 @@ -../../../examples/motion_designator.ipynb \ No newline at end of file diff --git a/doc/source/notebooks/object_designator.ipynb b/doc/source/notebooks/object_designator.ipynb deleted file mode 120000 index 065caac0b..000000000 --- a/doc/source/notebooks/object_designator.ipynb +++ /dev/null @@ -1 +0,0 @@ -../../../examples/object_designator.ipynb \ No newline at end of file diff --git a/doc/source/notebooks/orm_example.ipynb b/doc/source/notebooks/orm_example.ipynb deleted file mode 120000 index dd3b43ee0..000000000 --- a/doc/source/notebooks/orm_example.ipynb +++ /dev/null @@ -1 +0,0 @@ -../../../examples/orm_example.ipynb \ No newline at end of file diff --git a/doc/source/notebooks/orm_querying_examples.ipynb b/doc/source/notebooks/orm_querying_examples.ipynb deleted file mode 120000 index 853d8d1d2..000000000 --- a/doc/source/notebooks/orm_querying_examples.ipynb +++ /dev/null @@ -1 +0,0 @@ -../../../examples/orm_querying_examples.ipynb \ No newline at end of file diff --git a/doc/source/notebooks/pose.ipynb b/doc/source/notebooks/pose.ipynb deleted file mode 120000 index ca40edb56..000000000 --- a/doc/source/notebooks/pose.ipynb +++ /dev/null @@ -1 +0,0 @@ -../../../examples/pose.ipynb \ No newline at end of file diff --git a/doc/source/notebooks/robokudo.ipynb b/doc/source/notebooks/robokudo.ipynb deleted file mode 120000 index 97928bc1b..000000000 --- a/doc/source/notebooks/robokudo.ipynb +++ /dev/null @@ -1 +0,0 @@ -../../../examples/interface_examples/robokudo.ipynb \ No newline at end of file diff --git a/doc/source/notebooks/thumbnails/action_designator.png b/doc/source/notebooks/thumbnails/action_designator.png deleted file mode 120000 index f39b0478e..000000000 --- a/doc/source/notebooks/thumbnails/action_designator.png +++ /dev/null @@ -1 +0,0 @@ -../../../images/thumbnails/action_designator.png \ No newline at end of file diff --git a/doc/source/notebooks/thumbnails/bullet_world.png b/doc/source/notebooks/thumbnails/bullet_world.png deleted file mode 120000 index ba0e38633..000000000 --- a/doc/source/notebooks/thumbnails/bullet_world.png +++ /dev/null @@ -1 +0,0 @@ -../../../images/thumbnails/bullet_world.png \ No newline at end of file diff --git a/doc/source/notebooks/thumbnails/default.png b/doc/source/notebooks/thumbnails/default.png deleted file mode 120000 index 91394022f..000000000 --- a/doc/source/notebooks/thumbnails/default.png +++ /dev/null @@ -1 +0,0 @@ -../../../images/pycram_logo.png \ No newline at end of file diff --git a/doc/source/notebooks/thumbnails/location_designator.png b/doc/source/notebooks/thumbnails/location_designator.png deleted file mode 120000 index bc2a3d989..000000000 --- a/doc/source/notebooks/thumbnails/location_designator.png +++ /dev/null @@ -1 +0,0 @@ -../../../images/thumbnails/location_designator.png \ No newline at end of file diff --git a/doc/source/notebooks/thumbnails/motion_designator.png b/doc/source/notebooks/thumbnails/motion_designator.png deleted file mode 120000 index 25d82ec74..000000000 --- a/doc/source/notebooks/thumbnails/motion_designator.png +++ /dev/null @@ -1 +0,0 @@ -../../../images/thumbnails/motion_designator.png \ No newline at end of file diff --git a/doc/source/notebooks/thumbnails/object_designator.png b/doc/source/notebooks/thumbnails/object_designator.png deleted file mode 120000 index 876198dde..000000000 --- a/doc/source/notebooks/thumbnails/object_designator.png +++ /dev/null @@ -1 +0,0 @@ -../../../images/thumbnails/object_designator.png \ No newline at end of file diff --git a/doc/source/notebooks/thumbnails/overview.png b/doc/source/notebooks/thumbnails/overview.png deleted file mode 120000 index ec26a8933..000000000 --- a/doc/source/notebooks/thumbnails/overview.png +++ /dev/null @@ -1 +0,0 @@ -../../../images/thumbnails/overview.png \ No newline at end of file diff --git a/doc/source/notebooks/thumbnails/pose.png b/doc/source/notebooks/thumbnails/pose.png deleted file mode 120000 index 5dcf9f1ff..000000000 --- a/doc/source/notebooks/thumbnails/pose.png +++ /dev/null @@ -1 +0,0 @@ -../../../images/thumbnails/pose.png \ No newline at end of file diff --git a/doc/source/notebooks/thumbnails/tree.png b/doc/source/notebooks/thumbnails/tree.png deleted file mode 120000 index 251604eb3..000000000 --- a/doc/source/notebooks/thumbnails/tree.png +++ /dev/null @@ -1 +0,0 @@ -../../../images/thumbnails/tree.png \ No newline at end of file diff --git a/doc/source/resolvers.rst b/doc/source/resolvers.rst index 844c74804..0303fa7cb 100644 --- a/doc/source/resolvers.rst +++ b/doc/source/resolvers.rst @@ -15,4 +15,4 @@ Tutorial A tutorial for custom resolver creation is found in the notebook below. .. nbgallery:: - notebooks/custom_resolver \ No newline at end of file + notebooks/improving_actions \ No newline at end of file diff --git a/docker/Dockerfile b/docker/Dockerfile new file mode 100644 index 000000000..e85fb2af8 --- /dev/null +++ b/docker/Dockerfile @@ -0,0 +1,21 @@ +ARG FROM_IMAGE=ros:noetic-ros-core +ARG OVERLAY_WS=/opt/ros/overlay_ws + +FROM $FROM_IMAGE as cacher +ARG OVERLAY_WS +WORKDIR $OVERLAY_WS/src + +RUN apt-get update && apt-get install python3-pip python3-vcstool git -y && pip3 install pip --upgrade +RUN pip3 install rosdep && rosdep init + +RUN vcs import --input https://raw.githubusercontent.com/cram2/pycram/dev/pycram-https.rosinstall --recursive --skip-existing $OVERLAY_WS/src +RUN rosdep update && rosdep install --from-paths $OVERLAY_WS/src --ignore-src -r -y + +RUN . /opt/ros/noetic/setup.sh && cd $OVERLAY_WS && catkin_make +RUN echo "source $OVERLAY_WS/devel/setup.bash" >> ~/.bashrc + +RUN pip3 install --upgrade pip +WORKDIR $OVERLAY_WS/src/pycram +RUN pip3 install -r requirements.txt + +EXPOSE 11311 \ No newline at end of file diff --git a/examples/action_designator.ipynb b/examples/action_designator.ipynb index 69cfa4ef3..9ee38d1f1 100644 --- a/examples/action_designator.ipynb +++ b/examples/action_designator.ipynb @@ -6,12 +6,12 @@ "metadata": {}, "source": [ "# Action Designator\n", - "This example will show the different kinds of Action Designator that are available. We will see how to create Action Designators and what they do.\n", + "This example will show the different kinds of Action Designators that are available. We will see how to create Action Designators and what they do.\n", "\n", "\n", - "Action Designator are high-level descriptions of actions which the robot should execute. \n", + "Action Designators are high-level descriptions of actions which the robot should execute. \n", "\n", - "Action Deisgnators are created from a Action Designator Descritpion, which describes the type of action as well as the parameter for this action. Parameter are given as a list of possible parameters.\n", + "Action Designators are created from an Action Designator Description, which describes the type of action as well as the parameter for this action. Parameter are given as a list of possible parameters.\n", "For example, if you want to describe the robot moving to a table you would need a ```NavigateAction``` and a list of poses that are near the table. The Action Designator Description will then pick one of the poses and return a performable Action Designator which contains the picked pose. \n", "\n" ] @@ -103,7 +103,7 @@ "id": "30bd6765", "metadata": {}, "source": [ - "What we now did was create the pose were we want to move the robot, create a description describing a navigation with a list of possible poses (in this case the list contains only one pose) and create an action designator from the description. The action designator contains the pose picked from the list of possible poses and can be performed." + "What we now did was: create the pose where we want to move the robot, create a description describing a navigation with a list of possible poses (in this case the list contains only one pose) and create an action designator from the description. The action designator contains the pose picked from the list of possible poses and can be performed." ] }, { @@ -126,7 +126,7 @@ "source": [ "Every designator that is performed needs to be in an environment that specifies where to perform the designator either on the real robot or the simulated one. This environment is called ```simulated_robot``` similar there is also a ```real_robot``` environment. \n", "\n", - "There are also decorators which do the same thing but for whole methods, they are called ```with_real_robot``` and ```with_simulated_robor```" + "There are also decorators which do the same thing but for whole methods, they are called ```with_real_robot``` and ```with_simulated_robot```." ] }, { @@ -137,7 +137,7 @@ "## Move Torso\n", "This action designator moves the torso up or down, specifically it sets the torso joint to a given value.\n", "\n", - "We start again by creating a description and resolving it to a designator. Afterwards, the designator is perfomed in a ```simulated_robot``` environment. " + "We start again by creating a description and resolving it to a designator. Afterwards, the designator is performed in a ```simulated_robot``` environment. " ] }, { @@ -216,9 +216,9 @@ "metadata": {}, "source": [ "## Pick Up and Place\n", - "Since these are depending on each other, meaning you can only place something when you picked it up beforehand, they will be shown together. \n", + "Since these two are dependent on each other, meaning you can only place something when you picked it up beforehand, they will be shown together. \n", "\n", - "These action designators use object designators, which will not be further explained so please check the example on object designators for more details. \n", + "These action designators use object designators, which will not be further explained in this tutorial so please check the example on object designators for more details. \n", "\n", "To start we need an environment in which we can pick up and place things as well as an object to pick up." ] @@ -552,7 +552,7 @@ "metadata": {}, "source": [ "## Transporting\n", - "Transporting can transport an object from its current position to another target position. It is similar to the Pick and Place plan used in the Pick-up and Place example. Since we need an Object which we can transport we spawn a milk, you don't need to do this if you alredy spawned it in a previous example." + "Transporting can transport an object from its current position to another target position. It is similar to the Pick and Place plan used in the Pick-up and Place example. Since we need an Object which we can transport we spawn a milk, you don't need to do this if you already have spawned it in a previous example." ] }, { diff --git a/examples/bullet_world.ipynb b/examples/bullet_world.ipynb index 67016f4d2..80623bbfd 100644 --- a/examples/bullet_world.ipynb +++ b/examples/bullet_world.ipynb @@ -2,7 +2,6 @@ "cells": [ { "cell_type": "markdown", - "id": "8d2d6a94", "metadata": {}, "source": [ "# Bullet World\n", @@ -14,31 +13,37 @@ { "cell_type": "code", "execution_count": 1, - "id": "23bbba35", - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2024-02-01T16:28:16.307401805Z", + "start_time": "2024-02-01T16:28:15.499235438Z" + } + }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - "Unknown tag \"material\" in /robot[@name='plane']/link[@name='planeLink']/collision[1]\n", - "Unknown tag \"contact\" in /robot[@name='plane']/link[@name='planeLink']\n", - "Unknown tag \"material\" in /robot[@name='plane']/link[@name='planeLink']/collision[1]\n", - "Unknown tag \"contact\" in /robot[@name='plane']/link[@name='planeLink']\n" + "Unknown attribute \"type\" in /robot[@name='pr2']/link[@name='base_laser_link']\n", + "Unknown attribute \"type\" in /robot[@name='pr2']/link[@name='wide_stereo_optical_frame']\n", + "Unknown attribute \"type\" in /robot[@name='pr2']/link[@name='narrow_stereo_optical_frame']\n", + "Unknown attribute \"type\" in /robot[@name='pr2']/link[@name='laser_tilt_link']\n", + "Failed to import Giskard messages\n", + "Could not import RoboKudo messages, RoboKudo interface could not be initialized\n", + "pybullet build time: Nov 28 2023 23:51:11\n" ] } ], "source": [ "from pycram.bullet_world import BulletWorld\n", "from pycram.pose import Pose\n", - "from pycram.enums import ObjectType\n", + "from pycram.enums import ObjectType, WorldMode\n", "\n", - "world = BulletWorld()" + "world = BulletWorld(mode=WorldMode.GUI)" ] }, { "cell_type": "markdown", - "id": "dccaf6ff", "metadata": {}, "source": [ "This new window is the BulletWorld, PyCRAMs internal physics simulation. You can use the mouse to move the camera around:\n", @@ -53,7 +58,6 @@ }, { "cell_type": "markdown", - "id": "4403bf9c", "metadata": {}, "source": [ "To close the BulletWorld again please use the ```exit``` method since it will also terminate threads running in the background" @@ -62,7 +66,6 @@ { "cell_type": "code", "execution_count": 7, - "id": "b1e6ed82", "metadata": {}, "outputs": [], "source": [ @@ -71,7 +74,6 @@ }, { "cell_type": "markdown", - "id": "e0fc7086", "metadata": {}, "source": [ "To spawn new things in the BulletWorld we need to import the Object class and create and instance of it. " @@ -80,8 +82,12 @@ { "cell_type": "code", "execution_count": 2, - "id": "48a3aed2", - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2024-02-01T16:14:50.629562309Z", + "start_time": "2024-02-01T16:14:50.621645448Z" + } + }, "outputs": [], "source": [ "from pycram.bullet_world import Object\n", @@ -91,27 +97,30 @@ }, { "cell_type": "markdown", - "id": "8a754f12", "metadata": {}, "source": [ "As you can see this spawns a milk floating in the air. What we did here was create a new Object which has the name \"milk\" as well as the type ```ObjectType.MILK ``` , is spawned from the file \"milk.stl\" and is at the position [0, 0, 1]. \n", "\n", - "The type of an Object can either be from the enum ObjectType or a string. However, it is recommended to use the enum since this would make for a more consistent naming of types which makes it easiert to work with types. But since the types of the enum might not fit your case you can also use strings. \n", + "The type of an Object can either be from the enum ObjectType or a string. However, it is recommended to use the enum since this would make for a more consistent naming of types which makes it easier to work with types. But since the types of the enum might not fit your case you can also use strings. \n", "\n", - "The first three of these parameters are required while the position is optional. As you can see it was sufficent to only specify the filename for PyCRAM to spawn the milk mesh. When only providing a filename PyCRAM will search in its resource directory for a matching file and use it. \n", + "The first three of these parameters are required while the position is optional. As you can see it was sufficient to only specify the filename for PyCRAM to spawn the milk mesh. When only providing a filename, PyCRAM will search in its resource directory for a matching file and use it. \n", "\n", "For a complete list of all parameters that can be used to crate an Object please check the documentation. \n", "\n", "\n", "\n", - "Since the Object is spawned we can now interact with it. First we want to move it around and change it's orientation" + "Since the Object is spawned, we can now interact with it. First we want to move it around and change its orientation" ] }, { "cell_type": "code", "execution_count": 3, - "id": "4ae2bc42", - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2024-01-25T18:29:23.208599020Z", + "start_time": "2024-01-25T18:29:23.206209707Z" + } + }, "outputs": [], "source": [ "milk.set_position(Pose([1, 1, 1]))" @@ -120,8 +129,12 @@ { "cell_type": "code", "execution_count": 4, - "id": "4adc7b11", - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2024-01-25T18:29:23.675871190Z", + "start_time": "2024-01-25T18:29:23.673804147Z" + } + }, "outputs": [], "source": [ "milk.set_orientation(Pose(orientation=[1,0, 0, 1]))" @@ -130,8 +143,12 @@ { "cell_type": "code", "execution_count": 5, - "id": "f91d1809", - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2024-01-25T18:29:24.180713247Z", + "start_time": "2024-01-25T18:29:24.175368603Z" + } + }, "outputs": [], "source": [ "milk.set_pose(Pose([0, 0, 1], [0, 0, 0, 1]))" @@ -139,17 +156,20 @@ }, { "cell_type": "markdown", - "id": "5805be38", "metadata": {}, "source": [ - "In the same sense as setting the position or orientation you can also get the position and orientation." + "In the same sense as setting the position or orientation, you can also get the position and orientation." ] }, { "cell_type": "code", - "execution_count": 9, - "id": "1db2aa78", - "metadata": {}, + "execution_count": 6, + "metadata": { + "ExecuteTime": { + "end_time": "2024-01-25T18:29:58.869360443Z", + "start_time": "2024-01-25T18:29:58.827502541Z" + } + }, "outputs": [ { "name": "stdout", @@ -168,8 +188,8 @@ "header: \n", " seq: 0\n", " stamp: \n", - " secs: 1690203002\n", - " nsecs: 93374252\n", + " secs: 1706207364\n", + " nsecs: 174507617\n", " frame_id: \"map\"\n", "pose: \n", " position: \n", @@ -194,20 +214,23 @@ }, { "cell_type": "markdown", - "id": "68c02db9", "metadata": {}, "source": [ "## Attachments\n", "You can attach Objects to each other simply by calling the attach method on one of them and providing the other as parameter. Since attachments are bi-directional it doesn't matter on which Object you call the method. \n", "\n", - "First we neeed another Object" + "First we need another Object" ] }, { "cell_type": "code", - "execution_count": 3, - "id": "10a493b1", - "metadata": {}, + "execution_count": 7, + "metadata": { + "ExecuteTime": { + "end_time": "2024-01-25T18:30:02.056106044Z", + "start_time": "2024-01-25T18:30:02.001333744Z" + } + }, "outputs": [], "source": [ "cereal = Object(\"cereal\", ObjectType.BREAKFAST_CEREAL, \"breakfast_cereal.stl\", pose=Pose([1, 0, 1]))" @@ -215,9 +238,13 @@ }, { "cell_type": "code", - "execution_count": 4, - "id": "275372e3", - "metadata": {}, + "execution_count": 8, + "metadata": { + "ExecuteTime": { + "end_time": "2024-01-25T18:30:03.288290549Z", + "start_time": "2024-01-25T18:30:03.283992204Z" + } + }, "outputs": [], "source": [ "milk.attach(cereal)" @@ -225,7 +252,6 @@ }, { "cell_type": "markdown", - "id": "5577c567", "metadata": {}, "source": [ "Now since they are attached to each other, if we move one of them the other will move in conjunction." @@ -233,9 +259,13 @@ }, { "cell_type": "code", - "execution_count": 5, - "id": "dff85834", - "metadata": {}, + "execution_count": 9, + "metadata": { + "ExecuteTime": { + "end_time": "2024-01-25T18:30:05.029258354Z", + "start_time": "2024-01-25T18:30:05.026329993Z" + } + }, "outputs": [], "source": [ "milk.set_position(Pose([1,1,1]))" @@ -243,7 +273,6 @@ }, { "cell_type": "markdown", - "id": "196bd705", "metadata": {}, "source": [ "In the same way the Object can also be detached, just call the detach method on one of the two attached Objects." @@ -251,50 +280,51 @@ }, { "cell_type": "code", - "execution_count": 13, - "id": "b0bba145", - "metadata": {}, - "outputs": [], + "execution_count": 10, + "metadata": { + "ExecuteTime": { + "end_time": "2024-01-25T18:30:06.737363899Z", + "start_time": "2024-01-25T18:30:06.734694119Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Removing constraint with id: 1\n" + ] + } + ], "source": [ "cereal.detach(milk)" ] }, { "cell_type": "markdown", - "id": "e5e44a67", "metadata": {}, "source": [ "## Links and Joints\n", - "Objects spawned from mesh files do not have links or joints, but if you spawn things from a URDF like a robot they will have a lot of links and joints. Every Object has two dictionaries as attributes namley ```links``` and ```joints``` which contain every link or joint as key and a unique id, used by PyBullet, as value. \n", + "Objects spawned from mesh files do not have links or joints, but if you spawn things from a URDF like a robot they will have a lot of links and joints. Every Object has two dictionaries as attributes, namely ```links``` and ```joints``` which contain every link or joint as key and a unique id, used by PyBullet, as value. \n", "\n", - "We will see this at the example of the PR2" + "We will see this at the example of the PR2:" ] }, { "cell_type": "code", - "execution_count": 6, - "id": "edf5cb72", - "metadata": {}, + "execution_count": 11, + "metadata": { + "ExecuteTime": { + "end_time": "2024-01-25T18:30:13.548802172Z", + "start_time": "2024-01-25T18:30:13.540787905Z" + } + }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "{'base_link': 0, 'base_bellow_link': 1, 'base_laser_link': 2, 'fl_caster_rotation_link': 3, 'fl_caster_l_wheel_link': 4, 'fl_caster_r_wheel_link': 5, 'fr_caster_rotation_link': 6, 'fr_caster_l_wheel_link': 7, 'fr_caster_r_wheel_link': 8, 'bl_caster_rotation_link': 9, 'bl_caster_l_wheel_link': 10, 'bl_caster_r_wheel_link': 11, 'br_caster_rotation_link': 12, 'br_caster_l_wheel_link': 13, 'br_caster_r_wheel_link': 14, 'torso_lift_link': 15, 'l_torso_lift_side_plate_link': 16, 'r_torso_lift_side_plate_link': 17, 'imu_link': 18, 'head_pan_link': 19, 'head_tilt_link': 20, 'head_plate_frame': 21, 'sensor_mount_link': 22, 'high_def_frame': 23, 'high_def_optical_frame': 24, 'double_stereo_link': 25, 'wide_stereo_link': 26, 'wide_stereo_optical_frame': 27, 'wide_stereo_l_stereo_camera_frame': 28, 'wide_stereo_l_stereo_camera_optical_frame': 29, 'wide_stereo_r_stereo_camera_frame': 30, 'wide_stereo_r_stereo_camera_optical_frame': 31, 'narrow_stereo_link': 32, 'narrow_stereo_optical_frame': 33, 'narrow_stereo_l_stereo_camera_frame': 34, 'narrow_stereo_l_stereo_camera_optical_frame': 35, 'narrow_stereo_r_stereo_camera_frame': 36, 'narrow_stereo_r_stereo_camera_optical_frame': 37, 'projector_wg6802418_frame': 38, 'projector_wg6802418_child_frame': 39, 'laser_tilt_mount_link': 40, 'laser_tilt_link': 41, 'r_shoulder_pan_link': 42, 'r_shoulder_lift_link': 43, 'r_upper_arm_roll_link': 44, 'r_upper_arm_link': 45, 'r_elbow_flex_link': 46, 'r_forearm_roll_link': 47, 'r_forearm_link': 48, 'r_wrist_flex_link': 49, 'r_wrist_roll_link': 50, 'r_gripper_palm_link': 51, 'r_gripper_led_frame': 52, 'r_gripper_motor_accelerometer_link': 53, 'r_gripper_tool_frame': 54, 'r_gripper_motor_slider_link': 55, 'r_gripper_motor_screw_link': 56, 'r_gripper_l_finger_link': 57, 'r_gripper_l_finger_tip_link': 58, 'r_gripper_r_finger_link': 59, 'r_gripper_r_finger_tip_link': 60, 'r_gripper_l_finger_tip_frame': 61, 'r_forearm_cam_frame': 62, 'r_forearm_cam_optical_frame': 63, 'l_shoulder_pan_link': 64, 'l_shoulder_lift_link': 65, 'l_upper_arm_roll_link': 66, 'l_upper_arm_link': 67, 'l_elbow_flex_link': 68, 'l_forearm_roll_link': 69, 'l_forearm_link': 70, 'l_wrist_flex_link': 71, 'l_wrist_roll_link': 72, 'l_gripper_palm_link': 73, 'l_gripper_led_frame': 74, 'l_gripper_motor_accelerometer_link': 75, 'l_gripper_tool_frame': 76, 'l_gripper_motor_slider_link': 77, 'l_gripper_motor_screw_link': 78, 'l_gripper_l_finger_link': 79, 'l_gripper_l_finger_tip_link': 80, 'l_gripper_r_finger_link': 81, 'l_gripper_r_finger_tip_link': 82, 'l_gripper_l_finger_tip_frame': 83, 'l_forearm_cam_frame': 84, 'l_forearm_cam_optical_frame': 85, 'torso_lift_motor_screw_link': 86, 'base_footprint': -1}\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Unknown attribute \"type\" in /robot[@name='pr2']/link[@name='base_laser_link']\n", - "Unknown attribute \"type\" in /robot[@name='pr2']/link[@name='wide_stereo_optical_frame']\n", - "Unknown attribute \"type\" in /robot[@name='pr2']/link[@name='narrow_stereo_optical_frame']\n", - "Unknown attribute \"type\" in /robot[@name='pr2']/link[@name='laser_tilt_link']\n", - "Unknown attribute \"type\" in /robot[@name='pr2']/link[@name='base_laser_link']\n", - "Unknown attribute \"type\" in /robot[@name='pr2']/link[@name='wide_stereo_optical_frame']\n", - "Unknown attribute \"type\" in /robot[@name='pr2']/link[@name='narrow_stereo_optical_frame']\n", - "Unknown attribute \"type\" in /robot[@name='pr2']/link[@name='laser_tilt_link']\n" + "{'base_link': , 'base_footprint': , 'base_bellow_link': , 'base_laser_link': , 'fl_caster_rotation_link': , 'fl_caster_l_wheel_link': , 'fl_caster_r_wheel_link': , 'fr_caster_rotation_link': , 'fr_caster_l_wheel_link': , 'fr_caster_r_wheel_link': , 'bl_caster_rotation_link': , 'bl_caster_l_wheel_link': , 'bl_caster_r_wheel_link': , 'br_caster_rotation_link': , 'br_caster_l_wheel_link': , 'br_caster_r_wheel_link': , 'torso_lift_link': , 'l_torso_lift_side_plate_link': , 'r_torso_lift_side_plate_link': , 'torso_lift_motor_screw_link': , 'imu_link': , 'head_pan_link': , 'head_tilt_link': , 'head_plate_frame': , 'sensor_mount_link': , 'high_def_frame': , 'high_def_optical_frame': , 'double_stereo_link': , 'wide_stereo_link': , 'wide_stereo_optical_frame': , 'wide_stereo_l_stereo_camera_frame': , 'wide_stereo_l_stereo_camera_optical_frame': , 'wide_stereo_r_stereo_camera_frame': , 'wide_stereo_r_stereo_camera_optical_frame': , 'narrow_stereo_link': , 'narrow_stereo_optical_frame': , 'narrow_stereo_l_stereo_camera_frame': , 'narrow_stereo_l_stereo_camera_optical_frame': , 'narrow_stereo_r_stereo_camera_frame': , 'narrow_stereo_r_stereo_camera_optical_frame': , 'projector_wg6802418_frame': , 'projector_wg6802418_child_frame': , 'laser_tilt_mount_link': , 'laser_tilt_link': , 'r_shoulder_pan_link': , 'r_shoulder_lift_link': , 'r_upper_arm_roll_link': , 'r_upper_arm_link': , 'r_forearm_roll_link': , 'r_elbow_flex_link': , 'r_forearm_link': , 'r_wrist_flex_link': , 'r_wrist_roll_link': , 'r_gripper_palm_link': , 'r_gripper_led_frame': , 'r_gripper_motor_accelerometer_link': , 'r_gripper_tool_frame': , 'r_gripper_motor_slider_link': , 'r_gripper_motor_screw_link': , 'r_gripper_l_finger_link': , 'r_gripper_r_finger_link': , 'r_gripper_l_finger_tip_link': , 'r_gripper_r_finger_tip_link': , 'r_gripper_l_finger_tip_frame': , 'l_shoulder_pan_link': , 'l_shoulder_lift_link': , 'l_upper_arm_roll_link': , 'l_upper_arm_link': , 'l_forearm_roll_link': , 'l_elbow_flex_link': , 'l_forearm_link': , 'l_wrist_flex_link': , 'l_wrist_roll_link': , 'l_gripper_palm_link': , 'l_gripper_led_frame': , 'l_gripper_motor_accelerometer_link': , 'l_gripper_tool_frame': , 'l_gripper_motor_slider_link': , 'l_gripper_motor_screw_link': , 'l_gripper_l_finger_link': , 'l_gripper_r_finger_link': , 'l_gripper_l_finger_tip_link': , 'l_gripper_r_finger_tip_link': , 'l_gripper_l_finger_tip_frame': , 'l_forearm_cam_frame': , 'l_forearm_cam_optical_frame': , 'r_forearm_cam_frame': , 'r_forearm_cam_optical_frame': }\n" ] } ], @@ -305,7 +335,6 @@ }, { "cell_type": "markdown", - "id": "e157eb6f", "metadata": {}, "source": [ "For links there are similar methods available as for the pose. However, you can only **get** the position and orientation of a link. " @@ -313,9 +342,13 @@ }, { "cell_type": "code", - "execution_count": 15, - "id": "51b59ffd", - "metadata": {}, + "execution_count": 12, + "metadata": { + "ExecuteTime": { + "end_time": "2024-01-25T18:30:26.283263579Z", + "start_time": "2024-01-25T18:30:26.259577324Z" + } + }, "outputs": [ { "name": "stdout", @@ -334,8 +367,8 @@ "header: \n", " seq: 0\n", " stamp: \n", - " secs: 1690203043\n", - " nsecs: 303540229\n", + " secs: 1706207426\n", + " nsecs: 257559537\n", " frame_id: \"map\"\n", "pose: \n", " position: \n", @@ -360,7 +393,6 @@ }, { "cell_type": "markdown", - "id": "ecd9c4a3", "metadata": {}, "source": [ "Methods available for joints are:\n", @@ -369,14 +401,18 @@ " * ```set_joint_state```\n", " * ```get_joint_limits```\n", " \n", - "We will see how these methods work at the example of the torso_lift_joint" + "We will see how these methods work at the example of the torso_lift_joint:" ] }, { "cell_type": "code", - "execution_count": 16, - "id": "38a8aef4", - "metadata": {}, + "execution_count": 13, + "metadata": { + "ExecuteTime": { + "end_time": "2024-01-25T18:30:51.633276335Z", + "start_time": "2024-01-25T18:30:51.590393104Z" + } + }, "outputs": [ { "name": "stdout", @@ -391,78 +427,87 @@ "source": [ "print(f\"Joint limits: {pr2.get_joint_limits('torso_lift_joint')}\")\n", "\n", - "print(f\"Current Joint state: {pr2.get_joint_state('torso_lift_joint')}\")\n", + "print(f\"Current Joint state: {pr2.get_joint_position('torso_lift_joint')}\")\n", "\n", - "pr2.set_joint_state(\"torso_lift_joint\", 0.2)\n", + "pr2.set_joint_position(\"torso_lift_joint\", 0.2)\n", "\n", - "print(f\"New Joint state: {pr2.get_joint_state('torso_lift_joint')}\")" + "print(f\"New Joint state: {pr2.get_joint_position('torso_lift_joint')}\")" ] }, { "cell_type": "markdown", - "id": "6d4ee70a", "metadata": {}, "source": [ "## Misc Methods\n", - "There are a few methods that don't fit any category but could be helpful anyways. The first two are ```get_color``` and ```set_color```, as the name implies they can be used to get or set the color for specific links or the whole Object. " + "There are a few methods that don't fit any category but could be helpful anyway. The first two are ```get_color``` and ```set_color```, as the name implies they can be used to get or set the color for specific links or the whole Object. " ] }, { "cell_type": "code", - "execution_count": 17, - "id": "5eee9b8a", - "metadata": {}, + "execution_count": 14, + "metadata": { + "ExecuteTime": { + "end_time": "2024-01-25T18:30:57.200886492Z", + "start_time": "2024-01-25T18:30:57.198278714Z" + } + }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Pr2 forearm color: (0.699999988079071, 0.699999988079071, 0.699999988079071, 1.0)\n" + "Pr2 forearm color: Color(R=0.699999988079071, G=0.699999988079071, B=0.699999988079071, A=1.0)\n" ] } ], "source": [ - "print(f\"Pr2 forearm color: {pr2.get_color('r_forearm_link')}\")" + "print(f\"Pr2 forearm color: {pr2.get_link_color('r_forearm_link')}\")" ] }, { "cell_type": "code", - "execution_count": 18, - "id": "07aa1c3f", - "metadata": {}, + "execution_count": 15, + "metadata": { + "ExecuteTime": { + "end_time": "2024-01-25T18:30:59.531448130Z", + "start_time": "2024-01-25T18:30:59.523750241Z" + } + }, "outputs": [], "source": [ - "pr2.set_color([1, 0, 0], \"r_forearm_link\")" + "pr2.set_link_color(\"r_forearm_link\", [1, 0, 0])" ] }, { "cell_type": "markdown", - "id": "ce5d910b", "metadata": {}, "source": [ - "Lastly, there is ```get_AABB``` AABB stands for axis aligned bounding box. This method returns two points in world coordinates which span a rectangle representing the AABB." + "Lastly, there is ```get_AABB```, AABB stands for *A*xis *A*ligned *B*ounding *B*ox. This method returns two points in world coordinates which span a rectangle representing the AABB." ] }, { "cell_type": "code", - "execution_count": 19, - "id": "2a78715b", - "metadata": {}, + "execution_count": 16, + "metadata": { + "ExecuteTime": { + "end_time": "2024-01-25T18:31:05.700993547Z", + "start_time": "2024-01-25T18:31:05.677436085Z" + } + }, "outputs": [ { "data": { "text/plain": [ - "((-0.0015000000000000005, -0.0015000000000000005, 0.06949999999999999),\n", - " (0.0015000000000000005, 0.0015000000000000005, 0.0725))" + "AxisAlignedBoundingBox(min_x=-0.0015000000000000005, min_y=-0.0015000000000000005, min_z=0.06949999999999999, max_x=0.0015000000000000005, max_y=0.0015000000000000005, max_z=0.0725)" ] }, - "execution_count": 19, + "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "pr2.get_AABB()" + "pr2.get_axis_aligned_bounding_box()" ] } ], diff --git a/examples/cram_plan_tutorial.ipynb b/examples/cram_plan_tutorial.ipynb index d322d7be3..d7d35c54d 100644 --- a/examples/cram_plan_tutorial.ipynb +++ b/examples/cram_plan_tutorial.ipynb @@ -213,7 +213,7 @@ "source": [ "import pybullet as p\n", "for link_name in apartment.links.keys():\n", - " world.add_vis_axis(apartment.get_link_position_and_orientation(link_name))\n", + " world.add_vis_axis(apartment.get_link_pose(link_name))\n", " p.addUserDebugText(link_name, apartment.get_link_position(link_name))" ] }, @@ -287,30 +287,30 @@ "def plan(obj, obj_desig, torso=0.2, place=\"countertop\"):\n", " world.reset_bullet_world()\n", " with simulated_robot:\n", - " ParkArmsAction.Action(Arms.BOTH).perform()\n", + " ParkArmsActionPerformable(Arms.BOTH).perform()\n", "\n", - " MoveTorsoAction.Action(torso).perform()\n", + " MoveTorsoActionPerformable(torso).perform()\n", " location = CostmapLocation(target=obj_desig, reachable_for=robot_desig)\n", " pose = location.resolve()\n", " print()\n", - " NavigateAction.Action(pose.pose).perform()\n", - " ParkArmsAction.Action(Arms.BOTH).perform()\n", + " NavigateActionPerformable(pose.pose).perform()\n", + " ParkArmsActionPerformable(Arms.BOTH).perform()\n", " good_torsos.append(torso)\n", " picked_up_arm = pose.reachable_arms[0]\n", - " PickUpAction.Action(object_designator=obj_desig, arm=pose.reachable_arms[0], grasp=\"front\").perform()\n", + " PickUpActionPerformable(object_designator=obj_desig, arm=pose.reachable_arms[0], grasp=\"front\").perform()\n", "\n", - " ParkArmsAction.Action(Arms.BOTH).perform()\n", + " ParkArmsActionPerformable(Arms.BOTH).perform()\n", " scm = SemanticCostmapLocation(place, apartment_desig, obj_desig)\n", " pose_island = scm.resolve()\n", "\n", " place_location = CostmapLocation(target=pose_island.pose, reachable_for=robot_desig, reachable_arm=picked_up_arm)\n", " pose = place_location.resolve()\n", "\n", - " NavigateAction.Action(pose.pose).perform()\n", + " NavigateActionPerformable(pose.pose).perform()\n", "\n", - " PlaceAction.Action(object_designator=obj_desig, target_location=pose_island.pose, arm=picked_up_arm).perform()\n", + " PlaceActionPerformable(object_designator=obj_desig, target_location=pose_island.pose, arm=picked_up_arm).perform()\n", "\n", - " ParkArmsAction.Action(Arms.BOTH).perform()\n", + " ParkArmsActionPerformable(Arms.BOTH).perform()\n", "\n", "good_torsos = []\n", "for obj_name in object_names:\n", @@ -489,7 +489,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Task tree can be manipulated with ordinary anytree manipulation. If we for example want to discard the second plan, we would write" + "Task tree can be manipulated with ordinary anytree manipulation. If we for example want to discard the second plan, we would write:" ] }, { @@ -613,7 +613,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "The task tree can also be reset to an empty one by invoking" + "The task tree can also be reset to an empty one by invoking:" ] }, { @@ -720,10 +720,10 @@ "evalue": "name 'world' is not defined", "output_type": "error", "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[0;32mIn[1], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[43mworld\u001b[49m\u001b[38;5;241m.\u001b[39mexit()\n", - "\u001b[0;31mNameError\u001b[0m: name 'world' is not defined" + "\u001B[0;31m---------------------------------------------------------------------------\u001B[0m", + "\u001B[0;31mNameError\u001B[0m Traceback (most recent call last)", + "Cell \u001B[0;32mIn[1], line 1\u001B[0m\n\u001B[0;32m----> 1\u001B[0m \u001B[43mworld\u001B[49m\u001B[38;5;241m.\u001B[39mexit()\n", + "\u001B[0;31mNameError\u001B[0m: name 'world' is not defined" ] } ], diff --git a/examples/custom_resolver.ipynb b/examples/custom_resolver.ipynb deleted file mode 100644 index 0660276e4..000000000 --- a/examples/custom_resolver.ipynb +++ /dev/null @@ -1,563 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Creating a custom Location Costmap\n", - "\n", - "In this tutorial we will walk through the creation of a costmap through machine learning.\n", - "First we need to gather a lot of data. For that we will write a randomized experiment for grasping a couple of objects.\n", - "In the experiment the robot will try to grasp a randomized object using random poses and torso heights." - ] - }, - { - "cell_type": "markdown", - "source": [], - "metadata": { - "collapsed": false - } - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": { - "ExecuteTime": { - "end_time": "2023-12-13T10:13:58.323072599Z", - "start_time": "2023-12-13T10:13:56.448691067Z" - } - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Requirement already up-to-date: probabilistic_model in /home/dprueser/.local/lib/python3.8/site-packages (1.4.13)\r\n", - "Requirement already satisfied, skipping upgrade: plotly>=5.18.0 in /home/dprueser/.local/lib/python3.8/site-packages (from probabilistic_model) (5.18.0)\r\n", - "Requirement already satisfied, skipping upgrade: random-events>=1.2.5 in /home/dprueser/.local/lib/python3.8/site-packages (from probabilistic_model) (1.2.5)\r\n", - "Requirement already satisfied, skipping upgrade: anytree>=2.9.0 in /home/dprueser/.local/lib/python3.8/site-packages (from probabilistic_model) (2.9.0)\r\n", - "Requirement already satisfied, skipping upgrade: portion>=2.4.1 in /home/dprueser/.local/lib/python3.8/site-packages (from probabilistic_model) (2.4.1)\r\n", - "Requirement already satisfied, skipping upgrade: packaging in /home/dprueser/.local/lib/python3.8/site-packages (from plotly>=5.18.0->probabilistic_model) (23.2)\r\n", - "Requirement already satisfied, skipping upgrade: tenacity>=6.2.0 in /home/dprueser/.local/lib/python3.8/site-packages (from plotly>=5.18.0->probabilistic_model) (8.2.3)\r\n", - "Requirement already satisfied, skipping upgrade: six in /usr/lib/python3/dist-packages (from anytree>=2.9.0->probabilistic_model) (1.14.0)\r\n", - "Requirement already satisfied, skipping upgrade: sortedcontainers~=2.2 in /home/dprueser/.local/lib/python3.8/site-packages (from portion>=2.4.1->probabilistic_model) (2.4.0)\r\n" - ] - } - ], - "source": [ - "!pip install --upgrade probabilistic_model" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": { - "ExecuteTime": { - "end_time": "2023-12-13T10:13:59.230429151Z", - "start_time": "2023-12-13T10:13:58.332536124Z" - } - }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "pybullet build time: May 20 2022 19:44:17\n", - "Unknown attribute \"type\" in /robot[@name='pr2']/link[@name='base_laser_link']\n", - "Unknown attribute \"type\" in /robot[@name='pr2']/link[@name='wide_stereo_optical_frame']\n", - "Unknown attribute \"type\" in /robot[@name='pr2']/link[@name='narrow_stereo_optical_frame']\n", - "Unknown attribute \"type\" in /robot[@name='pr2']/link[@name='laser_tilt_link']\n", - "[WARN] [1702462438.857886]: Could not import RoboKudo messages, RoboKudo interface could not be initialized\n", - "[WARN] [1702462438.862737]: Failed to import Giskard messages\n" - ] - } - ], - "source": [ - "from tf import transformations\n", - "import itertools\n", - "from typing import Optional, List, Tuple\n", - "import numpy as np\n", - "import sqlalchemy.orm\n", - "import tqdm\n", - "import pycram.orm.base\n", - "import pycram.task\n", - "from pycram.bullet_world import BulletWorld, Object as BulletWorldObject\n", - "from pycram.designators.action_designator import MoveTorsoAction, PickUpAction, NavigateAction, ParkArmsAction\n", - "from pycram.designators.object_designator import ObjectDesignatorDescription\n", - "import pycram.enums\n", - "from pycram.plan_failures import PlanFailure\n", - "from pycram.process_module import ProcessModule\n", - "from pycram.process_module import simulated_robot\n", - "import pycram.orm\n", - "from pycram.orm.base import Position, RobotState\n", - "from pycram.orm.task import TaskTreeNode, Code\n", - "from pycram.orm.action_designator import PickUpAction as ORMPickUpAction \n", - "from pycram.orm.object_designator import Object \n", - "import sqlalchemy.sql\n", - "import pandas as pd\n", - "from pycram.pose import Pose\n", - "\n", - "np.random.seed(420)\n", - "\n", - "ProcessModule.execution_delay = False\n", - "pycram.orm.base.ProcessMetaData().description = \"Tutorial for learning from experience in a Grasping action.\"\n", - "\n", - "\n", - "class GraspingExplorer:\n", - " \"\"\"Class to try randomized grasping plans.\"\"\"\n", - "\n", - " world: Optional[BulletWorld]\n", - "\n", - " def __init__(self, robots: Optional[List[Tuple[str, str]]] = None, objects: Optional[List[Tuple[str, str]]] = None,\n", - " arms: Optional[List[str]] = None, grasps: Optional[List[str]] = None,\n", - " samples_per_scenario: int = 1000):\n", - " \"\"\"\n", - " Create a GraspingExplorer.\n", - " :param robots: The robots to use\n", - " :param objects: The objects to try to grasp\n", - " :param arms: The arms of the robot to use\n", - " :param grasps: The grasp orientations to use\n", - " :param samples_per_scenario: The number of tries per scenario.\n", - " \"\"\"\n", - " # store exploration space\n", - " if not robots:\n", - " self.robots: List[Tuple[str, str]] = [(\"pr2\", \"pr2.urdf\")]\n", - "\n", - " if not objects:\n", - " self.objects: List[Tuple[str, pycram.enums.ObjectType, str]] = [(\"cereal\", pycram.enums.ObjectType.BREAKFAST_CEREAL, \"breakfast_cereal.stl\"), \n", - " (\"bowl\", pycram.enums.ObjectType.BOWL, \"bowl.stl\"),\n", - " (\"milk\", pycram.enums.ObjectType.MILK, \"milk.stl\"),\n", - " (\"spoon\", pycram.enums.ObjectType.SPOON, \"spoon.stl\")]\n", - "\n", - " if not arms:\n", - " self.arms: List[str] = [\"left\", \"right\"]\n", - "\n", - " if not grasps:\n", - " self.grasps: List[str] = [\"left\", \"right\", \"front\", \"top\"]\n", - "\n", - " # store trials per scenario\n", - " self.samples_per_scenario: int = samples_per_scenario\n", - "\n", - " # chain hyperparameters\n", - " self.hyper_parameters = [self.robots, self.objects, self.arms, self.grasps]\n", - "\n", - " self.total_tries = 0\n", - " self.total_failures = 0\n", - "\n", - " def perform(self, session: sqlalchemy.orm.Session):\n", - " \"\"\"\n", - " Perform all experiments.\n", - " :param session: The database-session to insert the samples in.\n", - " \"\"\"\n", - "\n", - " # create progress bar\n", - " progress_bar = tqdm.tqdm(\n", - " total=np.prod([len(p) for p in self.hyper_parameters]) * self.samples_per_scenario)\n", - " \n", - " self.world = BulletWorld(\"DIRECT\")\n", - "\n", - " # for every robot\n", - " for robot, robot_urdf in self.robots:\n", - "\n", - " # spawn it\n", - " robot = BulletWorldObject(robot, pycram.enums.ObjectType.ROBOT, robot_urdf)\n", - "\n", - " # for every obj\n", - " for obj, obj_type, obj_stl in self.objects:\n", - "\n", - " # spawn it\n", - " bw_object = BulletWorldObject(obj, obj_type, obj_stl, Pose([0, 0, 0.75], [0, 0, 0, 1]))\n", - "\n", - " # create object designator\n", - " object_designator = ObjectDesignatorDescription(names=[obj])\n", - "\n", - " # for every arm and grasp pose\n", - " for arm, grasp in itertools.product(self.arms, self.grasps):\n", - " # sample positions in 2D\n", - " positions = np.random.uniform([-2, -2], [2, 2], (self.samples_per_scenario, 2))\n", - "\n", - " # for every position\n", - " for position in positions:\n", - "\n", - " # set z axis to 0\n", - " position = [*position, 0]\n", - "\n", - " # calculate orientation for robot to face the object\n", - " angle = np.arctan2(position[1], position[0]) + np.pi\n", - " orientation = list(transformations.quaternion_from_euler(0, 0, angle, axes=\"sxyz\"))\n", - "\n", - " # try to execute a grasping plan\n", - " with simulated_robot:\n", - "\n", - " ParkArmsAction.Action(pycram.enums.Arms.BOTH).perform()\n", - " # navigate to sampled position\n", - " NavigateAction([Pose(position, orientation)]).resolve().perform()\n", - "\n", - " # move torso\n", - " height = np.random.uniform(0., 0.33, 1)[0]\n", - " MoveTorsoAction.Action(height).perform()\n", - "\n", - " # try to pick it up\n", - " try:\n", - " PickUpAction(object_designator, [arm], [grasp]).resolve().perform()\n", - "\n", - " # if it fails\n", - " except PlanFailure:\n", - "\n", - " # update failure stats\n", - " self.total_failures += 1\n", - "\n", - " # reset BulletWorld\n", - " self.world.reset_bullet_world()\n", - "\n", - " # update progress bar\n", - " self.total_tries += 1\n", - "\n", - " # insert into database\n", - " pycram.task.task_tree.insert(session, use_progress_bar=False)\n", - " pycram.task.reset_tree()\n", - "\n", - " progress_bar.update()\n", - " progress_bar.set_postfix(success_rate=(self.total_tries - self.total_failures) /\n", - " self.total_tries)\n", - "\n", - " bw_object.remove()\n", - " robot.remove()\n", - "\n", - " self.world.exit()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Next we have to establish a connection to a database and execute the experiment a couple of times. Note that the (few) number of samples we generate is only for demonstrations.\n", - "For robust and reliable machine learning millions of samples are required." - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": { - "scrolled": false, - "ExecuteTime": { - "end_time": "2023-12-13T10:15:50.758891855Z", - "start_time": "2023-12-13T10:13:59.232324147Z" - } - }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - " 0%| | 0/960 [00:00" - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "import jpt\n", - "\n", - "model = jpt.trees.JPT(variables=jpt.infer_from_dataframe(df, scale_numeric_types=False, precision=0.05),\n", - " min_samples_leaf=10, min_impurity_improvement=0.01)\n", - "model.fit(df)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Finally, we will insert our model in the existing JPT-Costmap wrapper, create a toy simulation and visualize our result." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "ExecuteTime": { - "start_time": "2023-12-13T10:15:51.329714184Z" - } - }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Unknown tag \"material\" in /robot[@name='plane']/link[@name='planeLink']/collision[1]\n", - "Unknown tag \"contact\" in /robot[@name='plane']/link[@name='planeLink']\n", - "Unknown attribute \"type\" in /robot[@name='pr2']/link[@name='base_laser_link']\n", - "Unknown attribute \"type\" in /robot[@name='pr2']/link[@name='wide_stereo_optical_frame']\n", - "Unknown attribute \"type\" in /robot[@name='pr2']/link[@name='narrow_stereo_optical_frame']\n", - "Unknown attribute \"type\" in /robot[@name='pr2']/link[@name='laser_tilt_link']\n", - "Unknown tag \"material\" in /robot[@name='plane']/link[@name='planeLink']/collision[1]\n", - "Unknown tag \"contact\" in /robot[@name='plane']/link[@name='planeLink']\n", - "Unknown attribute \"type\" in /robot[@name='pr2']/link[@name='base_laser_link']\n", - "Unknown attribute \"type\" in /robot[@name='pr2']/link[@name='wide_stereo_optical_frame']\n", - "Unknown attribute \"type\" in /robot[@name='pr2']/link[@name='narrow_stereo_optical_frame']\n", - "Unknown attribute \"type\" in /robot[@name='pr2']/link[@name='laser_tilt_link']\n" - ] - } - ], - "source": [ - "from pycram.resolver import JPTCostmapLocation\n", - "\n", - "\n", - "ProcessModule.execution_delay = True\n", - "\n", - "world = BulletWorld(\"GUI\")\n", - "robot = BulletWorldObject(\"pr2\", pycram.enums.ObjectType.ROBOT, \"pr2.urdf\")\n", - "\n", - "cereal = BulletWorldObject(\"milk\", pycram.enums.ObjectType.MILK, \"milk.stl\", pose=Pose([1, 0, 0.75], [0,0,0,1]))\n", - "np.random.seed(420)\n", - "cml = JPTCostmapLocation(cereal, reachable_for=robot, model=model)\n", - "cml.visualize()\n", - "with simulated_robot:\n", - " for sample in iter(cml):\n", - " ParkArmsAction.Action(pycram.enums.Arms.BOTH).perform()\n", - " NavigateAction.Action(sample.pose).perform()\n", - " MoveTorsoAction.Action(sample.torso_height).perform()\n", - " try:\n", - " PickUpAction.Action(\n", - " ObjectDesignatorDescription(types=[pycram.enums.ObjectType.MILK]).resolve(),\n", - " arm=sample.reachable_arm, grasp=sample.grasp).perform()\n", - " # time.sleep(5)\n", - " except pycram.plan_failures.PlanFailure as p:\n", - " continue\n", - " break\n", - "world.exit()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Congratulations, you made the PR2 learn how to grasp objects.\n", - "Yeehaaw!🤠" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.8.10" - } - }, - "nbformat": 4, - "nbformat_minor": 1 -} diff --git a/examples/improving_actions.ipynb b/examples/improving_actions.ipynb new file mode 100644 index 000000000..7bbfc41ef --- /dev/null +++ b/examples/improving_actions.ipynb @@ -0,0 +1,84218 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "source": [ + "# Improving Actions using Probabilities\n", + "\n", + "In this tutorial we will look at probabilistic specifications of actions and especially at an advance plan to pick up objects.\n", + "After this tutorial you will know:\n", + "- Why are probabilities useful for robotics \n", + "- How to use probabilistic models to specify actions\n", + "- How to use probabilistic machine learning to improve actions" + ], + "metadata": { + "collapsed": false + }, + "id": "e982bdf776b7192d" + }, + { + "cell_type": "markdown", + "source": [ + "Let's start by importing all the necessary modules." + ], + "metadata": { + "collapsed": false + }, + "id": "bbbaaaf31c3a9e8b" + }, + { + "cell_type": "code", + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Unknown attribute \"type\" in /robot[@name='pr2']/link[@name='base_laser_link']\n", + "Unknown attribute \"type\" in /robot[@name='pr2']/link[@name='wide_stereo_optical_frame']\n", + "Unknown attribute \"type\" in /robot[@name='pr2']/link[@name='narrow_stereo_optical_frame']\n", + "Unknown attribute \"type\" in /robot[@name='pr2']/link[@name='laser_tilt_link']\n", + "[WARN] [1711028821.218958]: Could not import RoboKudo messages, RoboKudo interface could not be initialized\n" + ] + } + ], + "source": [ + "import json\n", + "\n", + "import numpy as np\n", + "import os\n", + "import random\n", + "import time\n", + "\n", + "import pandas as pd\n", + "import sqlalchemy\n", + "import sqlalchemy.orm\n", + "\n", + "import plotly\n", + "import plotly.graph_objects as go\n", + "import tqdm\n", + "\n", + "from probabilistic_model.learning.jpt.jpt import JPT\n", + "from probabilistic_model.learning.jpt.variables import infer_variables_from_dataframe\n", + "from probabilistic_model.probabilistic_circuit.probabilistic_circuit import ProbabilisticCircuit\n", + "from random_events.events import Event\n", + "\n", + "import pycram.orm.base\n", + "from pycram.designators.actions.actions import MoveTorsoActionPerformable\n", + "from pycram.plan_failures import PlanFailure\n", + "from pycram.designators.object_designator import ObjectDesignatorDescription\n", + "from pycram.bullet_world import BulletWorld, Object\n", + "from pycram.robot_descriptions import robot_description\n", + "from pycram.enums import ObjectType, Arms, Grasp\n", + "from pycram.pose import Pose\n", + "from pycram.ros.viz_marker_publisher import VizMarkerPublisher\n", + "from pycram.process_module import ProcessModule, simulated_robot\n", + "from pycram.resolver.probabilistic.probabilistic_action import MoveAndPickUp\n", + "from pycram.task import task_tree, reset_tree\n", + "\n", + "ProcessModule.execution_delay = False\n", + "np.random.seed(69)\n", + "random.seed(69)" + ], + "metadata": { + "collapsed": false, + "ExecuteTime": { + "end_time": "2024-03-21T13:47:01.262567Z", + "start_time": "2024-03-21T13:46:59.567924Z" + } + }, + "id": "690c193e24875d2b", + "execution_count": 1 + }, + { + "cell_type": "markdown", + "source": [ + "Next, we connect to a database where we can store and load robot experiences." + ], + "metadata": { + "collapsed": false + }, + "id": "8aa86e4b5256e444" + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "initial_id", + "metadata": { + "collapsed": true, + "ExecuteTime": { + "end_time": "2024-03-21T13:47:01.280456Z", + "start_time": "2024-03-21T13:47:01.263722Z" + } + }, + "outputs": [], + "source": [ + "pycrorm_uri = os.getenv('PYCRORM_URI')\n", + "pycrorm_uri = \"mysql+pymysql://\" + pycrorm_uri\n", + "engine = sqlalchemy.create_engine('sqlite:///:memory:')\n", + "session = sqlalchemy.orm.sessionmaker(bind=engine)()\n", + "pycram.orm.base.Base.metadata.create_all(engine)" + ] + }, + { + "cell_type": "markdown", + "source": [ + "Now we construct an empty world with just a floating milk, where we can learn about PickUp actions." + ], + "metadata": { + "collapsed": false + }, + "id": "9883ac8ebb551df0" + }, + { + "cell_type": "code", + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Unknown tag \"material\" in /robot[@name='plane']/link[@name='planeLink']/collision[1]\n", + "Unknown tag \"contact\" in /robot[@name='plane']/link[@name='planeLink']\n", + "Unknown tag \"material\" in /robot[@name='plane']/link[@name='planeLink']/collision[1]\n", + "Unknown attribute \"type\" in /robot[@name='pr2']/link[@name='base_laser_link']\n", + "Unknown tag \"contact\" in /robot[@name='plane']/link[@name='planeLink']\n", + "Unknown attribute \"type\" in /robot[@name='pr2']/link[@name='wide_stereo_optical_frame']\n", + "Unknown attribute \"type\" in /robot[@name='pr2']/link[@name='narrow_stereo_optical_frame']\n", + "Unknown attribute \"type\" in /robot[@name='pr2']/link[@name='laser_tilt_link']\n", + "Unknown attribute \"type\" in /robot[@name='pr2']/link[@name='base_laser_link']\n", + "Unknown attribute \"type\" in /robot[@name='pr2']/link[@name='wide_stereo_optical_frame']\n", + "Unknown attribute \"type\" in /robot[@name='pr2']/link[@name='narrow_stereo_optical_frame']\n", + "Unknown attribute \"type\" in /robot[@name='pr2']/link[@name='laser_tilt_link']\n" + ] + } + ], + "source": [ + "world = BulletWorld(\"DIRECT\")\n", + "robot = Object(robot_description.name, ObjectType.ROBOT, robot_description.name + \".urdf\")\n", + "milk = Object(\"milk\", ObjectType.MILK, \"milk.stl\", pose=Pose([1.3, 1, 0.9]))\n", + "viz_marker_publisher = VizMarkerPublisher()\n", + "milk_description = ObjectDesignatorDescription(types=[ObjectType.MILK]).ground()" + ], + "metadata": { + "collapsed": false, + "ExecuteTime": { + "end_time": "2024-03-21T13:47:01.710037Z", + "start_time": "2024-03-21T13:47:01.281829Z" + } + }, + "id": "a66e49b86c6c92f1", + "execution_count": 3 + }, + { + "cell_type": "markdown", + "source": [ + "Next, we create a default, probabilistic model that describes how to pick up objects. We visualize the default policy. The default policy tries to pick up the object by standing close to it, but not too close. " + ], + "metadata": { + "collapsed": false + }, + "id": "2522d93e72798903" + }, + { + "cell_type": "code", + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ProbabilisticCircuit with 15 nodes and 14 edges\n" + ] + }, + { + "data": { + "text/html": " \n " + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.plotly.v1+json": { + "data": [ + { + "hovertext": [ + "Likelihood: 0.037390354701688756", + "Likelihood: 0.1366727257673293", + "Likelihood: 0.01896497711355174", + "Likelihood: 0.1781084082181187", + "Likelihood: 0.16583431190340636", + "Likelihood: 0.16933992352720612", + "Likelihood: 0.02721398308320946", + "Likelihood: 0.05444590031344", + "Likelihood: 0.1602076965090202", + "Likelihood: 0.028660090870436354", + "Likelihood: 0.1431557751074098", + "Likelihood: 0.17781852725840952", + "Likelihood: 0.03915164588910641", + "Likelihood: 0.039346890648079516", + "Likelihood: 0.07420562653595361", + "Likelihood: 0.2690757579602086", + "Likelihood: 0.22420389550455166", + "Likelihood: 0.14265936138123578", + "Likelihood: 0.1012185970580372", + "Likelihood: 0.08046826193309256", + "Likelihood: 0.013757350834253623", + "Likelihood: 0.26583073666915924", + "Likelihood: 0.14896841524152138", + "Likelihood: 0.025169403311690135", + "Likelihood: 0.29616796169523407", + "Likelihood: 0.1161562210830151", + "Likelihood: 0.07577931807491205", + "Likelihood: 0.1186321934808284", + "Likelihood: 0.13097497941091385", + "Likelihood: 0.04538348401387904", + "Likelihood: 0.12105646828489361", + "Likelihood: 0.15825600023159617", + "Likelihood: 0.16806005874813063", + "Likelihood: 0.11434010703653359", + "Likelihood: 0.07562044835890457", + "Likelihood: 0.1292573679517499", + "Likelihood: 0.0720257151671472", + "Likelihood: 0.06685533169077722", + "Likelihood: 0.18107277376513067", + "Likelihood: 0.08689201478802383", + "Likelihood: 0.22711803350352475", + "Likelihood: 0.21400770814789916", + "Likelihood: 0.09394683587270067", + "Likelihood: 0.24699644943865698", + "Likelihood: 0.05217024078456527", + "Likelihood: 0.008168181581510694", + "Likelihood: 0.12458107120475687", + "Likelihood: 0.040131074724923166", + "Likelihood: 0.09215418951150434", + "Likelihood: 0.037076436397982956", + "Likelihood: 0.23986591318152484", + "Likelihood: 0.24834936397403087", + "Likelihood: 0.07112240356146864", + "Likelihood: 0.14756377597295253", + "Likelihood: 0.13906460325256811", + "Likelihood: 0.28183437612563766", + "Likelihood: 0.06445770669491747", + "Likelihood: 0.07929029014512225", + "Likelihood: 0.18691920750910693", + "Likelihood: 0.29047566635698585", + "Likelihood: 0.06977353425954941", + "Likelihood: 0.16985473722980285", + "Likelihood: 0.11927894459182405", + "Likelihood: 0.27554083471493135", + "Likelihood: 0.2638704219191374", + "Likelihood: 0.037698611273599074", + "Likelihood: 0.08765672469307195", + "Likelihood: 0.2551184026579383", + "Likelihood: 0.04479248715799298", + "Likelihood: 0.18833584946963758", + "Likelihood: 0.05365328777366469", + "Likelihood: 0.19010394082986073", + "Likelihood: 0.17057472327614367", + "Likelihood: 0.19413141789467478", + "Likelihood: 0.012314385430265253", + "Likelihood: 0.08976455885413014", + "Likelihood: 0.25802764946762025", + "Likelihood: 0.05217105920451346", + "Likelihood: 0.10956852203854534", + "Likelihood: 0.1829343883492156", + "Likelihood: 0.15670689339315882", + "Likelihood: 0.22449430898170175", + "Likelihood: 0.05516095102663021", + "Likelihood: 0.06761287286416509", + "Likelihood: 0.09657006525640585", + "Likelihood: 0.08201488338606042", + "Likelihood: 0.21219708397847553", + "Likelihood: 0.17182451111762792", + "Likelihood: 0.22730980335481715", + "Likelihood: 0.05179461275531549", + "Likelihood: 0.06417155122782495", + "Likelihood: 0.18632749593189948", + "Likelihood: 0.14308697032718945", + "Likelihood: 0.24563238948541416", + "Likelihood: 0.30632640058443444", + "Likelihood: 0.27809744271368386", + "Likelihood: 0.09128200782344359", + "Likelihood: 0.16947201717043245", + "Likelihood: 0.14390543981104117", + "Likelihood: 0.2812818281430726", + "Likelihood: 0.2269864984466092", + "Likelihood: 0.1576547927858872", + "Likelihood: 0.1521525777582648", + "Likelihood: 0.017345185505449626", + "Likelihood: 0.014544298545731355", + "Likelihood: 0.10100091554766766", + "Likelihood: 0.12494558936862724", + "Likelihood: 0.270705463474896", + "Likelihood: 0.3114283085351552", + "Likelihood: 0.14342124107828644", + "Likelihood: 0.10867509021543283", + "Likelihood: 0.2505549616315266", + "Likelihood: 0.11979220445408388", + "Likelihood: 0.1183436601614714", + "Likelihood: 0.10597843646702096", + "Likelihood: 0.28306519741260566", + "Likelihood: 0.2025726666874207", + "Likelihood: 0.26778050365271927", + "Likelihood: 0.284737364413629", + "Likelihood: 0.1848205640835622", + "Likelihood: 0.28209034579135284", + "Likelihood: 0.24076095811533585", + "Likelihood: 0.07404124130587243", + "Likelihood: 0.06859982320067719", + "Likelihood: 0.05476439818438498", + "Likelihood: 0.061984750961177296", + "Likelihood: 0.09249907472740998", + "Likelihood: 0.1582724038459138", + "Likelihood: 0.2802185940450926", + "Likelihood: 0.2310934193419602", + "Likelihood: 0.0169486819283101", + "Likelihood: 0.18889388320254208", + "Likelihood: 0.04233677574523349", + "Likelihood: 0.16291137991901686", + "Likelihood: 0.08991673199695902", + "Likelihood: 0.22851017728378395", + "Likelihood: 0.03707762426888005", + "Likelihood: 0.2477034868157516", + "Likelihood: 0.31012170968338243", + "Likelihood: 0.057547651381646386", + "Likelihood: 0.06910938789937934", + "Likelihood: 0.08943576062955265", + "Likelihood: 0.10885126797690561", + "Likelihood: 0.25989295132635337", + "Likelihood: 0.06175157078637069", + "Likelihood: 0.14466367160807347", + "Likelihood: 0.012001254143065963", + "Likelihood: 0.13697017256153382", + "Likelihood: 0.1515447564164071", + "Likelihood: 0.10354253440595829", + "Likelihood: 0.13263016217843196", + "Likelihood: 0.08339730322331182", + "Likelihood: 0.092876941480302", + "Likelihood: 0.0667980644784893", + "Likelihood: 0.14922034940866544", + "Likelihood: 0.12316702833971015", + "Likelihood: 0.18739293749275732", + "Likelihood: 0.14592582521223602", + "Likelihood: 0.050402774792625026", + "Likelihood: 0.2456764208073022", + "Likelihood: 0.1464079400011995", + "Likelihood: 0.17453892347876118", + "Likelihood: 0.12115653843590997", + "Likelihood: 0.2944426349386998", + "Likelihood: 0.16992961015625008", + "Likelihood: 0.06456888508329289", + "Likelihood: 0.0889149448277325", + "Likelihood: 0.06513967495625926", + "Likelihood: 0.15733379676448592", + "Likelihood: 0.15727456303035708", + "Likelihood: 0.30255454591089376", + "Likelihood: 0.022119538076550805", + "Likelihood: 0.21024649906352574", + "Likelihood: 0.15702855769858656", + "Likelihood: 0.2531143263378646", + "Likelihood: 0.04639587742158651", + "Likelihood: 0.2868116519788101", + "Likelihood: 0.28326204623095724", + "Likelihood: 0.12050972760432808", + "Likelihood: 0.26998529634942914", + "Likelihood: 0.07311635191789931", + "Likelihood: 0.1389173608322929", + "Likelihood: 0.07576590116292836", + "Likelihood: 0.2870659743909647", + "Likelihood: 0.26439731398829286", + "Likelihood: 0.28875167354843684", + "Likelihood: 0.3119664191263936", + "Likelihood: 0.04119013897407925", + "Likelihood: 0.08774845705901865", + "Likelihood: 0.13905230299111973", + "Likelihood: 0.11585984592554271", + "Likelihood: 0.24307520088506723", + "Likelihood: 0.09362553170901208", + "Likelihood: 0.25813285477762604", + "Likelihood: 0.05542728024470627", + "Likelihood: 0.1800892950396037", + "Likelihood: 0.15718593904707162", + "Likelihood: 0.14186427606694121", + "Likelihood: 0.06407438043952352", + "Likelihood: 0.2850908262332049", + "Likelihood: 0.057155910792663064", + "Likelihood: 0.22364675306050086", + "Likelihood: 0.25620892266442946", + "Likelihood: 0.06308374281672613", + "Likelihood: 0.12245583695358699", + "Likelihood: 0.2880770221527392", + "Likelihood: 0.2539065582793193", + "Likelihood: 0.23303860678855118", + "Likelihood: 0.1860188233589474", + "Likelihood: 0.15943830545543375", + "Likelihood: 0.005612765836499478", + "Likelihood: 0.09179254059500014", + "Likelihood: 0.01989433534179809", + "Likelihood: 0.21311567805774448", + "Likelihood: 0.055084239263074285", + "Likelihood: 0.06010704432208926", + "Likelihood: 0.02125308128211427", + "Likelihood: 0.19793964010282528", + "Likelihood: 0.22669921297966836", + "Likelihood: 0.16764449049056923", + "Likelihood: 0.28636423995182014", + "Likelihood: 0.16406179410012134", + "Likelihood: 0.014417644866165669", + "Likelihood: 0.29602470943556825", + "Likelihood: 0.25736284318087577", + "Likelihood: 0.2865546940614866", + "Likelihood: 0.07241299840703161", + "Likelihood: 0.18730160195824005", + "Likelihood: 0.0983520098814089", + "Likelihood: 0.27978405010478263", + "Likelihood: 0.2363057870928036", + "Likelihood: 0.028860436684587484", + "Likelihood: 0.10893165769270723", + "Likelihood: 0.12529520863588933", + "Likelihood: 0.14285574814434635", + "Likelihood: 0.17001103776622137", + "Likelihood: 0.22909293443476303", + "Likelihood: 0.16871481395459045", + "Likelihood: 0.2844961529074517", + "Likelihood: 0.14901140559947154", + "Likelihood: 0.23952427287553713", + "Likelihood: 0.10871315480648969", + "Likelihood: 0.0835895452745341", + "Likelihood: 0.1896080684997517", + "Likelihood: 0.06289381063305763", + "Likelihood: 0.28928643231810863", + "Likelihood: 0.2775396024280474", + "Likelihood: 0.06164220706332981", + "Likelihood: 0.24104581553633497", + "Likelihood: 0.040372109076121314", + "Likelihood: 0.02338741139462028", + "Likelihood: 0.02765464673872183", + "Likelihood: 0.20067557682549572", + "Likelihood: 0.07203073969847852", + "Likelihood: 0.2722556655896279", + "Likelihood: 0.2386291200689921", + "Likelihood: 0.0869354514994288", + "Likelihood: 0.1839993920185191", + "Likelihood: 0.09629810136338722", + "Likelihood: 0.19172187335675786", + "Likelihood: 0.2297839260207359", + "Likelihood: 0.1625634979567364", + "Likelihood: 0.18363401437436785", + "Likelihood: 0.19371720281284166", + "Likelihood: 0.0624395655073948", + "Likelihood: 0.056753070491058544", + "Likelihood: 0.1484064221991734", + "Likelihood: 0.3009468043738178", + "Likelihood: 0.05472529333407213", + "Likelihood: 0.010026456958008705", + "Likelihood: 0.0644629073869422", + "Likelihood: 0.28046106060444465", + "Likelihood: 0.018937056813718593", + "Likelihood: 0.15544510176434365", + "Likelihood: 0.07217019476015314", + "Likelihood: 0.13539142919109118", + "Likelihood: 0.21379340440899824", + "Likelihood: 0.1702622426575686", + "Likelihood: 0.07147903910919663", + "Likelihood: 0.12957217886184944", + "Likelihood: 0.1666247953919825", + "Likelihood: 0.05655184883643386", + "Likelihood: 0.1900726483952778", + "Likelihood: 0.12080857573162945", + "Likelihood: 0.09663097500080756", + "Likelihood: 0.1303349496256968", + "Likelihood: 0.16424053652652132", + "Likelihood: 0.157680780995639", + "Likelihood: 0.07515297882560547", + "Likelihood: 0.13858133406497183", + "Likelihood: 0.26091977465432203", + "Likelihood: 0.05801573806927941", + "Likelihood: 0.31061437304955086", + "Likelihood: 0.25874175785606374", + "Likelihood: 0.11362959876821907", + "Likelihood: 0.09281011285718187", + "Likelihood: 0.3043812325840951", + "Likelihood: 0.044370753140443", + "Likelihood: 0.08476744239667537", + "Likelihood: 0.2284746189179548", + "Likelihood: 0.07039873649563973", + "Likelihood: 0.16121212205431862", + "Likelihood: 0.046546690121115016", + "Likelihood: 0.2603353252277492", + "Likelihood: 0.19952494711557345", + "Likelihood: 0.08233339581767601", + "Likelihood: 0.0666618708980124", + "Likelihood: 0.04313051508780929", + "Likelihood: 0.18315322973049025", + "Likelihood: 0.038290413207342236", + "Likelihood: 0.048529579826456816", + "Likelihood: 0.25748117428559275", + "Likelihood: 0.18432789731316926", + "Likelihood: 0.1911195336218904", + "Likelihood: 0.10312961438658656", + "Likelihood: 0.10419684836845533", + "Likelihood: 0.0006878943549733938", + "Likelihood: 0.12322319750640644", + "Likelihood: 0.2787145269695932", + "Likelihood: 0.14229223541554395", + "Likelihood: 0.17142058960668216", + "Likelihood: 0.28296360109941887", + "Likelihood: 0.16028406803518444", + "Likelihood: 0.2016589093548264", + "Likelihood: 0.2185691404342069", + "Likelihood: 0.21084122903730795", + "Likelihood: 0.1739201014596444", + "Likelihood: 0.30147535753121324", + "Likelihood: 0.2361605186520935", + "Likelihood: 0.23746404701726562", + "Likelihood: 0.08041384029913029", + "Likelihood: 0.3024720605394624", + "Likelihood: 0.25974926463819875", + "Likelihood: 0.13385231688214982", + "Likelihood: 0.041807958144447044", + "Likelihood: 0.08489833429540121", + "Likelihood: 0.013253252947006565", + "Likelihood: 0.16875113266839784", + "Likelihood: 0.20551383153739847", + "Likelihood: 0.3210968478180208", + "Likelihood: 0.12248068787012983", + "Likelihood: 0.1315956241597149", + "Likelihood: 0.2022432087521108", + "Likelihood: 0.046903508483207235", + "Likelihood: 0.040690274943260614", + "Likelihood: 0.11249258812354665", + "Likelihood: 0.1613150501833823", + "Likelihood: 0.07910211348402024", + "Likelihood: 0.21514768591471484", + "Likelihood: 0.15063500062137872", + "Likelihood: 0.011436482234230261", + "Likelihood: 0.1476130941227302", + "Likelihood: 0.23208529162531108", + "Likelihood: 0.1553150548036827", + "Likelihood: 0.0745752152857773", + "Likelihood: 0.1966642395982448", + "Likelihood: 0.1840122141381398", + "Likelihood: 0.04533920537143628", + "Likelihood: 0.07389786273648326", + "Likelihood: 0.18855889835891676", + "Likelihood: 0.19104706530370946", + "Likelihood: 0.30498190504825706", + "Likelihood: 0.09728517636791645", + "Likelihood: 0.15119024987701946", + "Likelihood: 0.03309797110313541", + "Likelihood: 0.08885910256450315", + "Likelihood: 0.06869225504132587", + "Likelihood: 0.21435441791967105", + "Likelihood: 0.012120884335118482", + "Likelihood: 0.20474913318999347", + "Likelihood: 0.20787077850251853", + "Likelihood: 0.04233837339243749", + "Likelihood: 0.2759725958184817", + "Likelihood: 0.004456926909421235", + "Likelihood: 0.19426428085785785", + "Likelihood: 0.04474721682800546", + "Likelihood: 0.3110527015779766", + "Likelihood: 0.27274458005402247", + "Likelihood: 0.23216848617416602", + "Likelihood: 0.21520558494996245", + "Likelihood: 0.26011048186606023", + "Likelihood: 0.26574370051204005", + "Likelihood: 0.028700361129410604", + "Likelihood: 0.08024350039708135", + "Likelihood: 0.2694621611520205", + "Likelihood: 0.14105813674628528", + "Likelihood: 0.04469650140464048", + "Likelihood: 0.21764987725764517", + "Likelihood: 0.029436226254445592", + "Likelihood: 0.120830017987284", + "Likelihood: 0.07931813901190346", + "Likelihood: 0.07979118985111497", + "Likelihood: 0.21166153870076584", + "Likelihood: 0.023075187168515615", + "Likelihood: 0.10781665048627216", + "Likelihood: 0.22225544936115135", + "Likelihood: 0.12136633096687977", + "Likelihood: 0.17734799839932436", + "Likelihood: 0.1463504281804764", + "Likelihood: 0.2618969140332372", + "Likelihood: 0.29442152649365305", + "Likelihood: 0.03875938207188401", + "Likelihood: 0.1676285869951907", + "Likelihood: 0.09123905895486757", + "Likelihood: 0.31853783156471743", + "Likelihood: 0.18198440871574612", + "Likelihood: 0.2744447396481863", + "Likelihood: 0.2763082265537312", + "Likelihood: 0.12127467760006821", + "Likelihood: 0.21405774743553818", + "Likelihood: 0.26715231853199856", + "Likelihood: 0.06473995107214833", + "Likelihood: 0.09181133914753972", + "Likelihood: 0.0192827321450764", + "Likelihood: 0.2647432864726643", + "Likelihood: 0.07539691689110647", + "Likelihood: 0.2511019957716314", + "Likelihood: 0.26420356427854524", + "Likelihood: 0.164559178331794", + "Likelihood: 0.25936198784519343", + "Likelihood: 0.006008251069719346", + "Likelihood: 0.09269213139446777", + "Likelihood: 0.19363400976746423", + "Likelihood: 0.08638592714661604", + "Likelihood: 0.06074287201631729", + "Likelihood: 0.13462113103004572", + "Likelihood: 0.08673910854234358", + "Likelihood: 0.009046009485896078", + "Likelihood: 0.21172368958668", + "Likelihood: 0.057168652829430976", + "Likelihood: 0.21962709032565159", + "Likelihood: 0.1124677754150115", + "Likelihood: 0.08806798087217999", + "Likelihood: 0.2418120996898827", + "Likelihood: 0.1715148966319566", + "Likelihood: 0.25347948992695046", + "Likelihood: 0.11766007194844899", + "Likelihood: 0.02478503668489332", + "Likelihood: 0.29598321675642136", + "Likelihood: 0.009777848409478946", + "Likelihood: 0.23262637853128162", + "Likelihood: 0.3154474305945269", + "Likelihood: 0.2937866108722873", + "Likelihood: 0.040335761348141264", + "Likelihood: 0.0709138453449375", + "Likelihood: 0.16320488889905005", + "Likelihood: 0.1681089063368948", + "Likelihood: 0.014710112394317153", + "Likelihood: 0.08124140152056424", + "Likelihood: 0.17570488670733933", + "Likelihood: 0.2852231701145934", + "Likelihood: 0.2520457485344845", + "Likelihood: 0.05506251815314024", + "Likelihood: 0.2566515252178652", + "Likelihood: 0.23849399931058116", + "Likelihood: 0.019914527296732147", + "Likelihood: 0.089539080460643", + "Likelihood: 0.0558520376985593", + "Likelihood: 0.030893194148677375", + "Likelihood: 0.12924650971932397", + "Likelihood: 0.2766188911657455", + "Likelihood: 0.22110134259749434", + "Likelihood: 0.302340310722322", + "Likelihood: 0.051460409931508265", + "Likelihood: 0.23491416158881376", + "Likelihood: 0.034643266708189915", + "Likelihood: 0.28961036156722625", + "Likelihood: 0.010734157141604327", + "Likelihood: 0.16554292842982024", + "Likelihood: 0.08098179581329118", + "Likelihood: 0.29083340530123875", + "Likelihood: 0.15024859303253238", + "Likelihood: 0.2679770199096094", + "Likelihood: 0.04754760685291781", + "Likelihood: 0.01064231643640605", + "Likelihood: 0.10855132648097973", + "Likelihood: 0.2533969570348023", + "Likelihood: 0.07015424528401548", + "Likelihood: 0.09535422381671287", + "Likelihood: 0.1855028467264692", + "Likelihood: 0.029817915975498967", + "Likelihood: 0.09368131935008177", + "Likelihood: 0.024384268506193713", + "Likelihood: 0.04736271612961317", + "Likelihood: 0.019603246402633508", + "Likelihood: 0.19811870503501885", + "Likelihood: 0.158271003756756", + "Likelihood: 0.12478639830441199", + "Likelihood: 0.2704305090941256", + "Likelihood: 0.11701252991786915", + "Likelihood: 0.25686102618225276", + "Likelihood: 0.0023586436905214322", + "Likelihood: 0.26448799106442866", + "Likelihood: 0.016422722459717938", + "Likelihood: 0.005609572356114014", + "Likelihood: 0.20024024176367375", + "Likelihood: 0.11972706099973023", + "Likelihood: 0.09106126485347386", + "Likelihood: 0.30782351461856594", + "Likelihood: 0.2868889734975145", + "Likelihood: 0.1269794225807527", + "Likelihood: 0.15013655510807894", + "Likelihood: 0.058656807757214297", + "Likelihood: 0.14032338269660424", + "Likelihood: 0.07928016756189524", + "Likelihood: 0.21225978011992405", + "Likelihood: 0.015484619539704378", + "Likelihood: 0.1899487436889696", + "Likelihood: 0.2166419774172967", + "Likelihood: 0.02262437549578951", + "Likelihood: 0.2340424501723673", + "Likelihood: 0.21136316163296368", + "Likelihood: 0.3129493083802818", + "Likelihood: 0.09553566562082266", + "Likelihood: 0.026949454135069967", + "Likelihood: 0.12030728113784753", + "Likelihood: 0.20388895714822544", + "Likelihood: 0.2009772071396901", + "Likelihood: 0.08010477694465919", + "Likelihood: 0.0035200372135009584", + "Likelihood: 0.20069179850595123", + "Likelihood: 0.14648921525202055", + "Likelihood: 0.18137089335779089", + "Likelihood: 0.043505817800930845", + "Likelihood: 0.26162206966635493", + "Likelihood: 0.14537681724240445", + "Likelihood: 0.13156605075173358", + "Likelihood: 0.2643622304968965", + "Likelihood: 0.013033657203694277", + "Likelihood: 0.07908781720564384", + "Likelihood: 0.19366916164598175", + "Likelihood: 0.03684012722714205", + "Likelihood: 0.06998980710526537", + "Likelihood: 0.10429634591967274", + "Likelihood: 0.2354044589857911", + "Likelihood: 0.30268837378421404", + "Likelihood: 0.09374320595923501", + "Likelihood: 0.17140679460120242", + "Likelihood: 0.04338670932309578", + "Likelihood: 0.13634656661281214", + "Likelihood: 0.23600736107491993", + "Likelihood: 0.013105374842983476", + "Likelihood: 0.24021188739611585", + "Likelihood: 0.10651700550941787", + "Likelihood: 0.1909502201831947", + "Likelihood: 0.15670781168429831", + "Likelihood: 0.13962122979951913", + "Likelihood: 0.30085441009880165", + "Likelihood: 0.005423067916975437", + "Likelihood: 0.27231761973768454", + "Likelihood: 0.0033823489159892574", + "Likelihood: 0.21137642206242935", + "Likelihood: 0.23931811828320368", + "Likelihood: 0.14741121481615402", + "Likelihood: 0.26870982924821224", + "Likelihood: 0.24845493229508528", + "Likelihood: 0.23476192062562748", + "Likelihood: 0.0411347002683363", + "Likelihood: 0.11236347702980654", + "Likelihood: 0.09744748096826493", + "Likelihood: 0.28486876688006324", + "Likelihood: 0.3185188875440203", + "Likelihood: 0.027663775250103925", + "Likelihood: 0.08056095844183303", + "Likelihood: 0.2083980329167701", + "Likelihood: 0.27747846285374794", + "Likelihood: 0.0031100333192370447", + "Likelihood: 0.22785963756046101", + "Likelihood: 0.10467761623704319", + "Likelihood: 0.25209534587629856", + "Likelihood: 0.2605766912833886", + "Likelihood: 0.1572995759985723", + "Likelihood: 0.21748253975764475", + "Likelihood: 0.09479836891263184", + "Likelihood: 0.22668035725810398", + "Likelihood: 0.15060141140223476", + "Likelihood: 0.105767916509277", + "Likelihood: 0.05629281077575179", + "Likelihood: 0.07470796504524699", + "Likelihood: 0.03456610436440543", + "Likelihood: 0.16513173859484093", + "Likelihood: 0.19503647605858754", + "Likelihood: 0.26051437806442557", + "Likelihood: 0.12679856102028497", + "Likelihood: 0.16949203856384631", + "Likelihood: 0.03394241160125979", + "Likelihood: 0.2676731671495032", + "Likelihood: 0.01739830172896302", + "Likelihood: 0.18320988089091905", + "Likelihood: 0.09764042538192724", + "Likelihood: 0.073512739531846", + "Likelihood: 0.1725737524133686", + "Likelihood: 0.012865675720960935", + "Likelihood: 0.07225052258372322", + "Likelihood: 0.06286681180325605", + "Likelihood: 0.08033670070526552", + "Likelihood: 0.13244158567583422", + "Likelihood: 0.012252387136824083", + "Likelihood: 0.10346032428566239", + "Likelihood: 0.043038880564915796", + "Likelihood: 0.1361233920771905", + "Likelihood: 0.22881023996425015", + "Likelihood: 0.26635725702355023", + "Likelihood: 0.019347530608091284", + "Likelihood: 0.26812454691751186", + "Likelihood: 0.13570245918156087", + "Likelihood: 0.1133396119701106", + "Likelihood: 0.11789619111881314", + "Likelihood: 0.06663679489376075", + "Likelihood: 0.08440278484694276", + "Likelihood: 0.09279429971658641", + "Likelihood: 0.16528907053762348", + "Likelihood: 0.3231263163534197", + "Likelihood: 0.21800434344081593", + "Likelihood: 0.22242703652461868", + "Likelihood: 0.13525083432630436", + "Likelihood: 0.03573839882491076", + "Likelihood: 0.08541329358762863", + "Likelihood: 0.056326741536113924", + "Likelihood: 0.027639223098813774", + "Likelihood: 0.26924736931485127", + "Likelihood: 0.15026053580192525", + "Likelihood: 0.23029486062051002", + "Likelihood: 0.29945462985722116", + "Likelihood: 0.07981539295001433", + "Likelihood: 0.287121812376841", + "Likelihood: 0.18202050502159275", + "Likelihood: 0.09524061867733055", + "Likelihood: 0.01914375639863388", + "Likelihood: 0.09407103001237933", + "Likelihood: 0.03234485373808768", + "Likelihood: 0.2668764815132888", + "Likelihood: 0.13747345648321443", + "Likelihood: 0.2779085313814282", + "Likelihood: 0.12710704530143482", + "Likelihood: 0.07906658552485675", + "Likelihood: 0.08844285860756744", + "Likelihood: 0.10749933394601573", + "Likelihood: 0.26689765374270547", + "Likelihood: 0.1675608185597545", + "Likelihood: 0.18722762074296723", + "Likelihood: 0.09198935171929194", + "Likelihood: 0.1838821797194548", + "Likelihood: 0.04679616027245693", + "Likelihood: 0.27680801388721993", + "Likelihood: 0.27253498398588555", + "Likelihood: 0.019939435241194445", + "Likelihood: 0.2723021064255231", + "Likelihood: 0.012986314945504784", + "Likelihood: 0.03423399993816921", + "Likelihood: 0.10507421615825663", + "Likelihood: 0.06135476100208841", + "Likelihood: 0.2967114691273634", + "Likelihood: 0.08406072822411448", + "Likelihood: 0.12617259405056966", + "Likelihood: 0.26419852850535996", + "Likelihood: 0.126856502887811", + "Likelihood: 0.2306887647348236", + "Likelihood: 0.17731705917555202", + "Likelihood: 0.06105191554295843", + "Likelihood: 0.2277201263285725", + "Likelihood: 0.0561585105693956", + "Likelihood: 0.13531575927036743", + "Likelihood: 0.12039016434287007", + "Likelihood: 0.06869435261078545", + "Likelihood: 0.006086044039618263", + "Likelihood: 0.06173571550202768", + "Likelihood: 0.09610810408484621", + "Likelihood: 0.14508766042973284", + "Likelihood: 0.17585339003258263", + "Likelihood: 0.2782861605489981", + "Likelihood: 0.17485411545094068", + "Likelihood: 0.04883045539592729", + "Likelihood: 0.08205601354734847", + "Likelihood: 0.25400873204979013", + "Likelihood: 0.2959046236440269", + "Likelihood: 0.08196495168675544", + "Likelihood: 0.26099319753419614", + "Likelihood: 0.08463977524779298", + "Likelihood: 0.013871130048640105", + "Likelihood: 0.1834092440400771", + "Likelihood: 0.12326338342377981", + "Likelihood: 0.1829769184645282", + "Likelihood: 0.020169800760894117", + "Likelihood: 0.15691830436594748", + "Likelihood: 0.07886715064024798", + "Likelihood: 0.07791058623029719", + "Likelihood: 0.12129863664718427", + "Likelihood: 0.2004581687863168", + "Likelihood: 0.24185176205079909", + "Likelihood: 0.09351776159353177", + "Likelihood: 0.3229768232659855", + "Likelihood: 0.17847667959737284", + "Likelihood: 0.08913978384852905", + "Likelihood: 0.038040105773807384", + "Likelihood: 0.17554403246475386", + "Likelihood: 0.11724895594216041", + "Likelihood: 0.27849378216611725", + "Likelihood: 0.2896415303263999", + "Likelihood: 0.0951583828337081", + "Likelihood: 0.04748764565268596", + "Likelihood: 0.12474206027163941", + "Likelihood: 0.06954385310404156", + "Likelihood: 0.2469482496152361", + "Likelihood: 0.26520010450703524", + "Likelihood: 0.24506107772687388", + "Likelihood: 0.25945926116209367", + "Likelihood: 0.004890414369085221", + "Likelihood: 0.032940157910355525", + "Likelihood: 0.2874382233206009", + "Likelihood: 0.18324318774150383", + "Likelihood: 0.016042625037773962", + "Likelihood: 0.08522521406045316", + "Likelihood: 0.2389796695871749", + "Likelihood: 0.1938644654305161", + "Likelihood: 0.16106900749549194", + "Likelihood: 0.18084468491487313", + "Likelihood: 0.2774268577484394", + "Likelihood: 0.13080647464167233", + "Likelihood: 0.17881350837701568", + "Likelihood: 0.32379410489038923", + "Likelihood: 0.007237835984648147", + "Likelihood: 0.034337520218445876", + "Likelihood: 0.04290847111918474", + "Likelihood: 0.017110315288516177", + "Likelihood: 0.07844883984898211", + "Likelihood: 0.24903993298747015", + "Likelihood: 0.2594396016059051", + "Likelihood: 0.14317215351216594", + "Likelihood: 0.07506261911543302", + "Likelihood: 0.06025049671527401", + "Likelihood: 0.2784286194684102", + "Likelihood: 0.1290449883087207", + "Likelihood: 0.08324548507718933", + "Likelihood: 0.1707445472316085", + "Likelihood: 0.1295538593625649", + "Likelihood: 0.17264801211067723", + "Likelihood: 0.133557766647656", + "Likelihood: 0.1415497974360007", + "Likelihood: 0.18281612908209155", + "Likelihood: 0.04325905071974633", + "Likelihood: 0.11448890618186688", + "Likelihood: 0.21248169356145985", + "Likelihood: 0.05355266064914738", + "Likelihood: 0.13030425108449722", + "Likelihood: 0.16500348924009037", + "Likelihood: 0.26385193274457214", + "Likelihood: 0.1739445518548748", + "Likelihood: 0.15527203475376214", + "Likelihood: 0.012154646021106831", + "Likelihood: 0.07750740964988406", + "Likelihood: 0.06316209321179309", + "Likelihood: 0.15072565883813674", + "Likelihood: 0.10411598530923609", + "Likelihood: 0.18046183336908056", + "Likelihood: 0.267603425060809", + "Likelihood: 0.06683535294285128", + "Likelihood: 0.019107885962069145", + "Likelihood: 0.01601776460257786", + "Likelihood: 0.1358544219910166", + "Likelihood: 0.04098232269481165", + "Likelihood: 0.020464348890613628", + "Likelihood: 0.25956823118884215", + "Likelihood: 0.16622165787512583", + "Likelihood: 0.30063793153589113", + "Likelihood: 0.2542268955010146", + "Likelihood: 0.3007890934030086", + "Likelihood: 0.28509168236947785", + "Likelihood: 0.1388197976363875", + "Likelihood: 0.19470406778880253", + "Likelihood: 0.12132472606262523", + "Likelihood: 0.2810737578761821", + "Likelihood: 0.1216225308343109", + "Likelihood: 0.027793264696759776", + "Likelihood: 0.2563160405230134", + "Likelihood: 0.2505947060677133", + "Likelihood: 0.10048441531045549", + "Likelihood: 0.049423313326498894", + "Likelihood: 0.0471516363860733", + "Likelihood: 0.05268865979734355", + "Likelihood: 0.2667214655164066", + "Likelihood: 0.20501946679508395", + "Likelihood: 0.09594417385671644", + "Likelihood: 0.11488599396482022", + "Likelihood: 0.13051806886487202", + "Likelihood: 0.16795343017691855", + "Likelihood: 0.004326883478969674", + "Likelihood: 0.16157046203946365", + "Likelihood: 0.060056805543070975", + "Likelihood: 0.07129861502966714", + "Likelihood: 0.14912494552650482", + "Likelihood: 0.07421921174179723", + "Likelihood: 0.10060223247289947", + "Likelihood: 0.034401856368640356", + "Likelihood: 0.07406427456211762", + "Likelihood: 0.17423470702502078", + "Likelihood: 0.010542277752143059", + "Likelihood: 0.0035375126511588825", + "Likelihood: 0.038762201663979576", + "Likelihood: 0.22699679721535912", + "Likelihood: 0.23263855020702556", + "Likelihood: 0.19036291527276383", + "Likelihood: 0.11588941973261233", + "Likelihood: 0.03622511552090539", + "Likelihood: 0.16120270059219766", + "Likelihood: 0.16098524808510414", + "Likelihood: 0.021625978037522656", + "Likelihood: 0.049848343454194144", + "Likelihood: 0.14685978864019691", + "Likelihood: 0.04950904556189122", + "Likelihood: 0.2919583814543811", + "Likelihood: 0.2043669709819495", + "Likelihood: 0.13358822401346437", + "Likelihood: 0.10026884225662416", + "Likelihood: 0.21359739658010457", + "Likelihood: 0.23800750056235867", + "Likelihood: 0.08272889416443441", + "Likelihood: 0.22280693929316528", + "Likelihood: 0.2004373877416652", + "Likelihood: 0.14544334606701378", + "Likelihood: 0.156528115921887", + "Likelihood: 0.1166957421861834", + "Likelihood: 0.2291258326602174", + "Likelihood: 0.007799713678795769", + "Likelihood: 0.3084638862527371", + "Likelihood: 0.08025049584428681", + "Likelihood: 0.14650913568813173", + "Likelihood: 0.060727140412687515", + "Likelihood: 0.041538466386100745", + "Likelihood: 0.10920759680140481", + "Likelihood: 0.22933789872141436", + "Likelihood: 0.0415273379527035", + "Likelihood: 0.01744885381630706", + "Likelihood: 0.19625860373643442", + "Likelihood: 0.2779260752064068", + "Likelihood: 0.19618732296151362", + "Likelihood: 0.14584997292374496", + "Likelihood: 0.29099705014720634", + "Likelihood: 0.2573374242960751", + "Likelihood: 0.172057767887375", + "Likelihood: 0.12106736617213971", + "Likelihood: 0.02950693398610937", + "Likelihood: 0.2284182580257074", + "Likelihood: 0.029918306393012673", + "Likelihood: 0.05986473259650994", + "Likelihood: 0.1795664753757983", + "Likelihood: 0.05630619119841054", + "Likelihood: 0.3010521480289277", + "Likelihood: 0.015039133056528582", + "Likelihood: 0.15856312637595152", + "Likelihood: 0.06612254319126981", + "Likelihood: 0.020238492521910074", + "Likelihood: 0.19904421080836654", + "Likelihood: 0.1252994880635412", + "Likelihood: 0.17016207616194545", + "Likelihood: 0.28247592937310895", + "Likelihood: 0.08054480663904255", + "Likelihood: 0.15811085309831913", + "Likelihood: 0.052212597841361404", + "Likelihood: 0.262153778590849", + "Likelihood: 0.24778291010733003", + "Likelihood: 0.14600981865512558", + "Likelihood: 0.2566534772749161", + "Likelihood: 0.0940165765646458", + "Likelihood: 0.18984343463836348", + "Likelihood: 0.09717602566891502", + "Likelihood: 0.15221795928268111", + "Likelihood: 0.0662600620022854", + "Likelihood: 0.11026013195541869", + "Likelihood: 0.09127234344828768", + "Likelihood: 0.07992633333106991", + "Likelihood: 0.07283550233421454", + "Likelihood: 0.10422300391982267", + "Likelihood: 0.28601084816390604", + "Likelihood: 0.08045256574978886", + "Likelihood: 0.07335577278352767", + "Likelihood: 0.1919085156439959", + "Likelihood: 0.03788400603864854", + "Likelihood: 0.21494824108432684", + "Likelihood: 0.015743866353177954", + "Likelihood: 0.008791717632443418", + "Likelihood: 0.2048432009288833", + "Likelihood: 0.057971645168096116", + "Likelihood: 0.2625079774826456", + "Likelihood: 0.25390203293401936", + "Likelihood: 0.21600677601543058", + "Likelihood: 0.19628823710909335", + "Likelihood: 0.07081838823624653", + "Likelihood: 0.08920642194014844", + "Likelihood: 0.1770145337307182", + "Likelihood: 0.2508876229093182", + "Likelihood: 0.0681762948469317", + "Likelihood: 0.13433707599204547", + "Likelihood: 0.3151470792496528", + "Likelihood: 0.1623219160711135", + "Likelihood: 0.12936503256036738", + "Likelihood: 0.11725548595618106", + "Likelihood: 0.18523183946160823", + "Likelihood: 0.14185941129187218", + "Likelihood: 0.23783745177732388", + "Likelihood: 0.21352369706325927", + "Likelihood: 0.0392600945029365", + "Likelihood: 0.2582297016658002", + "Likelihood: 0.12294091871724089", + "Likelihood: 0.10827543764000323", + "Likelihood: 0.2173859177250226", + "Likelihood: 0.10726970783137078", + "Likelihood: 0.22933708973509798", + "Likelihood: 0.1087262562577601", + "Likelihood: 0.3184782303183177", + "Likelihood: 0.26698644063190613", + "Likelihood: 0.10800483158431681", + "Likelihood: 0.2159993088883378", + "Likelihood: 0.1393302401886606", + "Likelihood: 0.1289186187395799", + "Likelihood: 0.06509896302083082", + "Likelihood: 0.10814289503647917", + "Likelihood: 0.2586969802865805", + "Likelihood: 0.03346537596142192", + "Likelihood: 0.12537238744982832", + "Likelihood: 0.10524907260936987", + "Likelihood: 0.011083585439828916", + "Likelihood: 0.13124828651894482", + "Likelihood: 0.2624242238397329", + "Likelihood: 0.23439509676925116", + "Likelihood: 0.18095193549927358", + "Likelihood: 0.14808119542896703", + "Likelihood: 0.12937268539495328", + "Likelihood: 0.2916558766444828", + "Likelihood: 0.23932732954907782", + "Likelihood: 0.12494561856156963", + "Likelihood: 0.21900016961344146", + "Likelihood: 0.09341093963549822", + "Likelihood: 0.040638738578767736", + "Likelihood: 0.28536324838505", + "Likelihood: 0.2520209791179764", + "Likelihood: 0.18195446211934815", + "Likelihood: 0.12817207641947959", + "Likelihood: 0.21453983623362413", + "Likelihood: 0.16116778455186168", + "Likelihood: 0.17836902642597113", + "Likelihood: 0.1974389551763164", + "Likelihood: 0.08710079125401782", + "Likelihood: 0.1966320421376524", + "Likelihood: 0.01522886688801002", + "Likelihood: 0.045703972435429605", + "Likelihood: 0.21664262793482394", + "Likelihood: 0.050295929118717095", + "Likelihood: 0.1440920835564822", + "Likelihood: 0.10817756649447448", + "Likelihood: 0.21970221153666683", + "Likelihood: 0.19201659317909225", + "Likelihood: 0.03291772362165671", + "Likelihood: 0.019267825002806993", + "Likelihood: 0.10689858066191024", + "Likelihood: 0.1267287832888889", + "Likelihood: 0.0759280593840592", + "Likelihood: 0.026805557615881583", + "Likelihood: 0.07819148122493784", + "Likelihood: 0.26893653826647645", + "Likelihood: 0.05162611074851631", + "Likelihood: 0.17015389584343613", + "Likelihood: 0.28402248148912324", + "Likelihood: 0.04278870253837794", + "Likelihood: 0.3041911982339415", + "Likelihood: 0.0388623177896374", + "Likelihood: 0.13004006501375712", + "Likelihood: 0.08327979322432652", + "Likelihood: 0.18430970777046504", + "Likelihood: 0.037825594400210036", + "Likelihood: 0.039521229218840666", + "Likelihood: 0.04082101979539533", + "Likelihood: 0.018378206922577904", + "Likelihood: 0.1169942201917526", + "Likelihood: 0.20214261761502214", + "Likelihood: 0.05012272391573885", + "Likelihood: 0.04201861860453182", + "Likelihood: 0.2851375202926841", + "Likelihood: 0.05604793428521345", + "Likelihood: 0.2589842824820623", + "Likelihood: 0.024327177618824497", + "Likelihood: 0.31676941957700777", + "Likelihood: 0.2794655024634765", + "Likelihood: 0.05038761871411391", + "Likelihood: 0.28005770659753476", + "Likelihood: 0.2664560455201984", + "Likelihood: 0.2602583235829368", + "Likelihood: 0.12264129634101152", + "Likelihood: 0.04892579114113519", + "Likelihood: 0.031254787822172184", + "Likelihood: 0.27951694564759205", + "Likelihood: 0.148657650534062", + "Likelihood: 0.0836690143572187", + "Likelihood: 0.16744429337007388", + "Likelihood: 0.19873372370421816", + "Likelihood: 0.2523132460838398", + "Likelihood: 0.2215047113474611", + "Likelihood: 0.23124189447140292", + "Likelihood: 0.1687229832811503", + "Likelihood: 0.2856976041791215", + "Likelihood: 0.25940237728539683", + "Likelihood: 0.12819946814829888", + "Likelihood: 0.04583556939213675", + "Likelihood: 0.23974527102844925", + "Likelihood: 0.2186249503083089", + "Likelihood: 0.049576143144602895", + "Likelihood: 0.13657289875725867", + "Likelihood: 0.24929882242209517", + "Likelihood: 0.09670670145253522", + "Likelihood: 0.2479487356718115", + "Likelihood: 0.05775315585891035", + "Likelihood: 0.12460053204184302", + "Likelihood: 0.08685758888684036", + "Likelihood: 0.2397362801837297", + "Likelihood: 0.19903021135657115", + "Likelihood: 0.01747644281352202", + "Likelihood: 0.20111221329491413", + "Likelihood: 0.14300360221748964", + "Likelihood: 0.07428060243009309", + "Likelihood: 0.2729794455259552", + "Likelihood: 0.1469152276974097", + "Likelihood: 0.18584885302312265", + "Likelihood: 0.22967093436237768", + "Likelihood: 0.21805284944288314", + "Likelihood: 0.28292806931490877", + "Likelihood: 0.30596481256637575", + "Likelihood: 0.08288119891277287", + "Likelihood: 0.014774765456531273", + "Likelihood: 0.0706859612309871", + "Likelihood: 0.2329566330752741", + "Likelihood: 0.26207939040798145", + "Likelihood: 0.00662190615605111", + "Likelihood: 0.11134708770707465", + "Likelihood: 0.023598791155653553", + "Likelihood: 0.1115195839667207", + "Likelihood: 0.03504901543255403", + "Likelihood: 0.16407681469276936", + "Likelihood: 0.03226181484938101", + "Likelihood: 0.23344535223344234", + "Likelihood: 0.10208079603196488", + "Likelihood: 0.26189276632657726", + "Likelihood: 0.11536918670512976", + "Likelihood: 0.0200002818972866", + "Likelihood: 0.2807433995613068", + "Likelihood: 0.1389541934843479", + "Likelihood: 0.2641622422440206", + "Likelihood: 0.1520810367488046", + "Likelihood: 0.27508723492010756", + "Likelihood: 0.13187107937915585", + "Likelihood: 0.08749828600369122", + "Likelihood: 0.11186003502208638", + "Likelihood: 0.16661066986630668", + "Likelihood: 0.23634389645920112", + "Likelihood: 0.14086786265152323", + "Likelihood: 0.2083714388274246", + "Likelihood: 0.2180017707330216", + "Likelihood: 0.04579850969954948", + "Likelihood: 0.08364570617793059", + "Likelihood: 0.062437356410157734", + "Likelihood: 0.13344229746672073", + "Likelihood: 0.28728637143877417", + "Likelihood: 0.21866126156585003", + "Likelihood: 0.2730342695782791", + "Likelihood: 0.1643550986852482", + "Likelihood: 0.3012025548039374", + "Likelihood: 0.13959548549813502", + "Likelihood: 0.2462317393218925", + "Likelihood: 0.06202812147528391", + "Likelihood: 0.00770685105763856", + "Likelihood: 0.0506688976198487", + "Likelihood: 0.2467621788653706", + "Likelihood: 0.08185700829887349", + "Likelihood: 0.04030008239576575", + "Likelihood: 0.09124855030270203", + "Likelihood: 0.14220882671963028", + "Likelihood: 0.1503224674188733", + "Likelihood: 0.1069994466058465", + "Likelihood: 0.06332713226078991", + "Likelihood: 0.30392084978862693", + "Likelihood: 0.25036512550627354", + "Likelihood: 0.030683269721877262", + "Likelihood: 0.24579364611252608", + "Likelihood: 0.20914904417532296", + "Likelihood: 0.022497026131098167", + "Likelihood: 0.19353200112017188", + "Likelihood: 0.08440594820212621", + "Likelihood: 0.003140463124821306", + "Likelihood: 0.25436297026482113", + "Likelihood: 0.22274007651627412", + "Likelihood: 0.2694128260558258", + "Likelihood: 0.1743619415747088", + "Likelihood: 0.08005243644737252", + "Likelihood: 0.3138628665581115", + "Likelihood: 0.14319588255777843", + "Likelihood: 0.08894098559588758", + "Likelihood: 0.10374042801303629", + "Likelihood: 0.2454800742128148", + "Likelihood: 0.2747945927200944", + "Likelihood: 0.07901951971254817", + "Likelihood: 0.046306823344341955", + "Likelihood: 0.02018528187073139", + "Likelihood: 0.2104919487152605", + "Likelihood: 0.026986728323210474", + "Likelihood: 0.17410678562141005", + "Likelihood: 0.18454213560280797", + "Likelihood: 0.14837566649175313", + "Likelihood: 0.27780278564129807", + "Likelihood: 0.047875234506425356", + "Likelihood: 0.18441432441084663", + "Likelihood: 0.3207033688657823", + "Likelihood: 0.18575828488232943", + "Likelihood: 0.03839228083927504", + "Likelihood: 0.10238868944617271", + "Likelihood: 0.011765314755276804", + "Likelihood: 0.15660019328391708", + "Likelihood: 0.19811483956399087", + "Likelihood: 0.25765893902155584", + "Likelihood: 0.2739017721127224", + "Likelihood: 0.13566082199362672", + "Likelihood: 0.2816721936136623", + "Likelihood: 0.26783659045182523", + "Likelihood: 0.0287143467798471", + "Likelihood: 0.1954307361398289", + "Likelihood: 0.1958667509459525", + "Likelihood: 0.24738422785810926", + "Likelihood: 0.05006035596981205", + "Likelihood: 0.16034662455161405", + "Likelihood: 0.09371554717668053", + "Likelihood: 0.14100821274549177", + "Likelihood: 0.09575061073001473", + "Likelihood: 0.06798411945625837", + "Likelihood: 0.13049400046004966", + "Likelihood: 0.30862578667860424", + "Likelihood: 0.03609402771514361", + "Likelihood: 0.2739088144767002", + "Likelihood: 0.04608329773353352", + "Likelihood: 0.042686818946115486", + "Likelihood: 0.05696473284565965", + "Likelihood: 0.23540046123671418", + "Likelihood: 0.25620089528768925", + "Likelihood: 0.1251146583885655", + "Likelihood: 0.28138855977057786", + "Likelihood: 0.06832906789177152", + "Likelihood: 0.15587644531210246", + "Likelihood: 0.04420002778647306", + "Likelihood: 0.14011005580195157", + "Likelihood: 0.11150062415518378", + "Likelihood: 0.1853113164827464", + "Likelihood: 0.224108817587809", + "Likelihood: 0.03643902581205899", + "Likelihood: 0.30568952851067305", + "Likelihood: 0.22795147245173356", + "Likelihood: 0.05202322590303519", + "Likelihood: 0.010913756560556244", + "Likelihood: 0.056821152852864036", + "Likelihood: 0.044096599064469895", + "Likelihood: 0.11460831275441637", + "Likelihood: 0.20865589262540757", + "Likelihood: 0.2441443640592249", + "Likelihood: 0.2917184108232406", + "Likelihood: 0.10134730427410259", + "Likelihood: 0.12294012933672238", + "Likelihood: 0.028336363233584416", + "Likelihood: 0.11389891087754633", + "Likelihood: 0.08903428813930264", + "Likelihood: 0.19788962566587623", + "Likelihood: 0.13685866733599752", + "Likelihood: 0.2836322579223263", + "Likelihood: 0.18451422666568176", + "Likelihood: 0.019713887961990625", + "Likelihood: 0.0492656862155773", + "Likelihood: 0.1974989594877588", + "Likelihood: 0.1092608751464925", + "Likelihood: 0.15633849585428752", + "Likelihood: 0.1568875351958891", + "Likelihood: 0.06262130810557232", + "Likelihood: 0.259277594273429", + "Likelihood: 0.31381541337436486", + "Likelihood: 0.19921914049234735", + "Likelihood: 0.10666797655012344", + "Likelihood: 0.28539669388699285", + "Likelihood: 0.31339679472890103", + "Likelihood: 0.3227180433648511", + "Likelihood: 0.19405117585231257", + "Likelihood: 0.06433821031385688", + "Likelihood: 0.16605644670533973", + "Likelihood: 0.20920851765073004", + "Likelihood: 0.1449468169402153", + "Likelihood: 0.17392400541720945", + "Likelihood: 0.32384239988251357", + "Likelihood: 0.0956429739175776", + "Likelihood: 0.26437579770931924", + "Likelihood: 0.05281214970182415", + "Likelihood: 0.13228756559424557", + "Likelihood: 0.3045909282346713", + "Likelihood: 0.015014971501927278", + "Likelihood: 0.25238919941820215", + "Likelihood: 0.043987964387830814", + "Likelihood: 0.13335600993542876", + "Likelihood: 0.10008466827397323", + "Likelihood: 0.007904739308362944", + "Likelihood: 0.10114749307426593", + "Likelihood: 0.13195162732898996", + "Likelihood: 0.06763855436029587", + "Likelihood: 0.07759225247701726", + "Likelihood: 0.018020655124385058", + "Likelihood: 0.31742864129233594", + "Likelihood: 0.05526713822640674", + "Likelihood: 0.1510130097786693", + "Likelihood: 0.14541969489563475", + "Likelihood: 0.1762137783187799", + "Likelihood: 0.06532682242724643", + "Likelihood: 0.11620699032933128", + "Likelihood: 0.19101502455853617", + "Likelihood: 0.13608437074797217", + "Likelihood: 0.20283034142969342", + "Likelihood: 0.13416399243270588", + "Likelihood: 0.037377534787980185", + "Likelihood: 0.1511198623401761", + "Likelihood: 0.2963593037021726", + "Likelihood: 0.03142653787748108", + "Likelihood: 0.30382684053423886", + "Likelihood: 0.1856385015142021", + "Likelihood: 0.26646829785685316", + "Likelihood: 0.07055603455920727", + "Likelihood: 0.24301388929022133", + "Likelihood: 0.03528980908347865", + "Likelihood: 0.06669309825028118", + "Likelihood: 0.07377296086232232", + "Likelihood: 0.05709374318815286", + "Likelihood: 0.26258633372324464", + "Likelihood: 0.0678048710899244", + "Likelihood: 0.271148658765319", + "Likelihood: 0.16706747972848499", + "Likelihood: 0.10643443255943018", + "Likelihood: 0.02202957077994246", + "Likelihood: 0.0113133885760095", + "Likelihood: 0.11522674313699383", + "Likelihood: 0.2541742329614886", + "Likelihood: 0.11644351714498472", + "Likelihood: 0.26033820062379487", + "Likelihood: 0.27844581901086757", + "Likelihood: 0.21658854129371177", + "Likelihood: 0.23476613879239483", + "Likelihood: 0.07569674083299462", + "Likelihood: 0.2869867299971129", + "Likelihood: 0.08911024221206104", + "Likelihood: 0.06992850593143003", + "Likelihood: 0.22486169824682606", + "Likelihood: 0.11002156634190706", + "Likelihood: 0.17389914942220036", + "Likelihood: 0.1392527169312095", + "Likelihood: 0.18056943861981456", + "Likelihood: 0.2809572418386304", + "Likelihood: 0.14605301342802873", + "Likelihood: 0.04548791090307977", + "Likelihood: 0.2021732781447896", + "Likelihood: 0.0523021515541227", + "Likelihood: 0.19941762789191556", + "Likelihood: 0.025839779825950066", + "Likelihood: 0.02386151092723476", + "Likelihood: 0.1501050610345071", + "Likelihood: 0.2879576165760482", + "Likelihood: 0.07455794052089793", + "Likelihood: 0.248006061491653", + "Likelihood: 0.061868513406987534", + "Likelihood: 0.1092869792257687", + "Likelihood: 0.2951190747414865", + "Likelihood: 0.008723550723090539", + "Likelihood: 0.15439138478670156", + "Likelihood: 0.0992835102768211", + "Likelihood: 0.20008144322773752", + "Likelihood: 0.09089083951116504", + "Likelihood: 0.279963295575963", + "Likelihood: 0.2963345488002846", + "Likelihood: 0.017474794029057494", + "Likelihood: 0.23683912839976595", + "Likelihood: 0.2710584538981511", + "Likelihood: 0.3005735057463336", + "Likelihood: 0.2166742082370282", + "Likelihood: 0.08096114507004608", + "Likelihood: 0.007588023758473338", + "Likelihood: 0.3212959741510208", + "Likelihood: 0.08859510373624124", + "Likelihood: 0.280777678491844", + "Likelihood: 0.2741575067406154", + "Likelihood: 0.2983781979072928", + "Likelihood: 0.010555147834683271", + "Likelihood: 0.10811702887468938", + "Likelihood: 0.15340761748755935", + "Likelihood: 0.12250479248104106", + "Likelihood: 0.051255065690903136", + "Likelihood: 0.21772762949445246", + "Likelihood: 0.15768951062974748", + "Likelihood: 0.07956225453042765", + "Likelihood: 0.31067929808310346", + "Likelihood: 0.21922166773917337", + "Likelihood: 0.0695963282251502", + "Likelihood: 0.0841455954859209", + "Likelihood: 0.27718917153390643", + "Likelihood: 0.1693800673456462", + "Likelihood: 0.10838554966930584", + "Likelihood: 0.0599063911548958", + "Likelihood: 0.21783918750461093", + "Likelihood: 0.11602125661966613", + "Likelihood: 0.1111735990284887", + "Likelihood: 0.0687958363279993", + "Likelihood: 0.18131278535409798", + "Likelihood: 0.0854471697591065", + "Likelihood: 0.0988464302712859", + "Likelihood: 0.04827567519656401", + "Likelihood: 0.01826297516498391", + "Likelihood: 0.2878377996553523", + "Likelihood: 0.10616558930540826", + "Likelihood: 0.18678083542953783", + "Likelihood: 0.3055312466400548", + "Likelihood: 0.1463449081227671", + "Likelihood: 0.05926409815507347", + "Likelihood: 0.3034284976780731", + "Likelihood: 0.13552928149987695", + "Likelihood: 0.22304192849506949", + "Likelihood: 0.16221400372960565", + "Likelihood: 0.273441427246133", + "Likelihood: 0.1357979625566973", + "Likelihood: 0.00646267577288305", + "Likelihood: 0.012129484959892918", + "Likelihood: 0.17675650071680218", + "Likelihood: 0.21437005716781274", + "Likelihood: 0.2305842228467256", + "Likelihood: 0.0663523644055097", + "Likelihood: 0.02112321381779374", + "Likelihood: 0.2609820699541133", + "Likelihood: 0.21060651077049614", + "Likelihood: 0.22524858511613594", + "Likelihood: 0.08477631406355055", + "Likelihood: 0.0965716027079768", + "Likelihood: 0.0788654164413753", + "Likelihood: 0.30608899681219837", + "Likelihood: 0.0777512608528036", + "Likelihood: 0.06493706781415459", + "Likelihood: 0.08017014839730971", + "Likelihood: 0.13131726151597276", + "Likelihood: 0.02769776717849074", + "Likelihood: 0.23378707147299327", + "Likelihood: 0.28456001929053143", + "Likelihood: 0.2254227164018312", + "Likelihood: 0.18824362900618014", + "Likelihood: 0.08414593352644317", + "Likelihood: 0.09945465540984919", + "Likelihood: 0.29254270888586525", + "Likelihood: 0.26692605570841965", + "Likelihood: 0.3088045231345376", + "Likelihood: 0.09250412528079545", + "Likelihood: 0.11231581257334611", + "Likelihood: 0.01688287418140138", + "Likelihood: 0.10147467842316955", + "Likelihood: 0.10715737909053377", + "Likelihood: 0.2765319863302336", + "Likelihood: 0.18111240421901992", + "Likelihood: 0.24951463758615733", + "Likelihood: 0.11292260963870117", + "Likelihood: 0.15201512900454797", + "Likelihood: 0.23737134088688355", + "Likelihood: 0.2970638562996334", + "Likelihood: 0.24968784375014808", + "Likelihood: 0.12410418667406663", + "Likelihood: 0.21487280640812362", + "Likelihood: 0.25538644957922757", + "Likelihood: 0.15409271991135393", + "Likelihood: 0.24210436625432633", + "Likelihood: 0.3043173778497105", + "Likelihood: 0.24165492426401422", + "Likelihood: 0.21805570808419797", + "Likelihood: 0.27062888910248106", + "Likelihood: 0.1540902680073873", + "Likelihood: 0.26991601894686895", + "Likelihood: 0.12947799875508914", + "Likelihood: 0.17195326933814917", + "Likelihood: 0.06561877333306596", + "Likelihood: 0.059269615686156844", + "Likelihood: 0.25303161424138926", + "Likelihood: 0.20962178436093082", + "Likelihood: 0.14931304244578386", + "Likelihood: 0.09821066872027019", + "Likelihood: 0.10240629989147755", + "Likelihood: 0.014636097446205826", + "Likelihood: 0.1211995892572228", + "Likelihood: 0.14967658972256082", + "Likelihood: 0.005889870871037451", + "Likelihood: 0.19242987110924686", + "Likelihood: 0.2904426129665113", + "Likelihood: 0.11509084526943135", + "Likelihood: 0.13706749069642157", + "Likelihood: 0.03111079020249485", + "Likelihood: 0.09156328154272679", + "Likelihood: 0.16415529063676126", + "Likelihood: 0.31132294524331156", + "Likelihood: 0.1804265875012563", + "Likelihood: 0.2582354337649134", + "Likelihood: 0.03371324249290835", + "Likelihood: 0.15660788271687234", + "Likelihood: 0.07992234115888792", + "Likelihood: 0.24738464087583542", + "Likelihood: 0.20591738681511718", + "Likelihood: 0.22582331734652067", + "Likelihood: 0.015466442866601038", + "Likelihood: 0.19887910294775105", + "Likelihood: 0.1753234696784616", + "Likelihood: 0.21696948373693736", + "Likelihood: 0.20284976960275855", + "Likelihood: 0.1851084854272286", + "Likelihood: 0.2750796965901694", + "Likelihood: 0.11972241838755153", + "Likelihood: 0.19050598344412892", + "Likelihood: 0.06021696352049316", + "Likelihood: 0.024510335110259008", + "Likelihood: 0.24632712985603591", + "Likelihood: 0.1982319601182395", + "Likelihood: 0.03874633810096579", + "Likelihood: 0.1137600058031298", + "Likelihood: 0.15290282949132605", + "Likelihood: 0.0932776261693346", + "Likelihood: 0.2924899701652006", + "Likelihood: 0.28163782857048236", + "Likelihood: 0.18118411168227697", + "Likelihood: 0.23932863145060324", + "Likelihood: 0.28346416527548346", + "Likelihood: 0.015953344732775883", + "Likelihood: 0.17374314249137066", + "Likelihood: 0.11426239302279419", + "Likelihood: 0.054095528031851865", + "Likelihood: 0.022716640323681977", + "Likelihood: 0.18589243623035387", + "Likelihood: 0.09779565221621747", + "Likelihood: 0.19544153935354638", + "Likelihood: 0.08557997990278364", + "Likelihood: 0.1386625671460921", + "Likelihood: 0.2500841891442262", + "Likelihood: 0.05331359297217607", + "Likelihood: 0.009057236929040223", + "Likelihood: 0.1520278349867288", + "Likelihood: 0.02400846186980959", + "Likelihood: 0.08434213044779185", + "Likelihood: 0.07674340918929816", + "Likelihood: 0.2426367518068753", + "Likelihood: 0.1293589303095615", + "Likelihood: 0.2075985063239719", + "Likelihood: 0.10016094024467055", + "Likelihood: 0.03342162067948957", + "Likelihood: 0.06145236704854368", + "Likelihood: 0.07955283830568986", + "Likelihood: 0.1838604873802597", + "Likelihood: 0.17420031163609084", + "Likelihood: 0.0077898336485594894", + "Likelihood: 0.08600720545161422", + "Likelihood: 0.22418192269554713", + "Likelihood: 0.09655285101041451", + "Likelihood: 0.22463071233783488", + "Likelihood: 0.30748349879838255", + "Likelihood: 0.20825880369501445", + "Likelihood: 0.11040858862928488", + "Likelihood: 0.13558903614397647", + "Likelihood: 0.07787961544660307", + "Likelihood: 0.09131169775117551", + "Likelihood: 0.1770165071452904", + "Likelihood: 0.09376555913309959", + "Likelihood: 0.14389888090091796", + "Likelihood: 0.09667064098752862", + "Likelihood: 0.3032018077069834", + "Likelihood: 0.16871869496798098", + "Likelihood: 0.3059664068640524", + "Likelihood: 0.18099989383793907", + "Likelihood: 0.05656870140624004", + "Likelihood: 0.01010638755204864", + "Likelihood: 0.035177744277187346", + "Likelihood: 0.14717959819031343", + "Likelihood: 0.10816349795262703", + "Likelihood: 0.07385481758196014", + "Likelihood: 0.014966021045173741", + "Likelihood: 0.16455606111860782", + "Likelihood: 0.06583698559782059", + "Likelihood: 0.2402366860993762", + "Likelihood: 0.21448090954685106", + "Likelihood: 0.08861067550622198", + "Likelihood: 0.04929806088788683", + "Likelihood: 0.19040756149100455", + "Likelihood: 0.02785489945373499", + "Likelihood: 0.24497428741093089", + "Likelihood: 0.23294931460898807", + "Likelihood: 0.10061409733993747", + "Likelihood: 0.15847009377941346", + "Likelihood: 0.2970371186895077", + "Likelihood: 0.1994856021779031", + "Likelihood: 0.2657552964953019", + "Likelihood: 0.16256669313338418", + "Likelihood: 0.22315059633690898", + "Likelihood: 0.18726515308972522", + "Likelihood: 0.23546338379452764", + "Likelihood: 0.015711687370783222", + "Likelihood: 0.059601107393011304", + "Likelihood: 0.23217294659220325", + "Likelihood: 0.0366684198115524", + "Likelihood: 0.18679325483066672", + "Likelihood: 0.25623174789464886", + "Likelihood: 0.24941707264308385", + "Likelihood: 0.0912236290102279", + "Likelihood: 0.28426638729235276", + "Likelihood: 0.07371286618607631", + "Likelihood: 0.23360876800717506", + "Likelihood: 0.11543470448915827", + "Likelihood: 0.06956502387572198", + "Likelihood: 0.04626202083674618", + "Likelihood: 0.2839948609964122", + "Likelihood: 0.10493211041836778", + "Likelihood: 0.2914691672991703", + "Likelihood: 0.2460689578044049", + "Likelihood: 0.03102150930308726", + "Likelihood: 0.18197579730914049", + "Likelihood: 0.05469560169472085", + "Likelihood: 0.06701108963342792", + "Likelihood: 0.15492325921187095", + "Likelihood: 0.0768432666020462", + "Likelihood: 0.08279078448572888", + "Likelihood: 0.17133247160136514", + "Likelihood: 0.0575693157900172", + "Likelihood: 0.014844788357957784", + "Likelihood: 0.22322215602776202", + "Likelihood: 0.27801198863682175", + "Likelihood: 0.3026258876078206", + "Likelihood: 0.07053793202359517", + "Likelihood: 0.14121937337456608", + "Likelihood: 0.018131536353108064", + "Likelihood: 0.31834070932408776", + "Likelihood: 0.050344439791055934", + "Likelihood: 0.24361340699392656", + "Likelihood: 0.1124074933523163", + "Likelihood: 0.21643352041959932", + "Likelihood: 0.29094999413077727", + "Likelihood: 0.13268140157866387", + "Likelihood: 0.2615018310188922", + "Likelihood: 0.11897170517543319", + "Likelihood: 0.11637076248939736", + "Likelihood: 0.0635533822344316", + "Likelihood: 0.2343820581266395", + "Likelihood: 0.1241247876309141", + "Likelihood: 0.2923159973001698", + "Likelihood: 0.12468670560585222", + "Likelihood: 0.23535607504638464", + "Likelihood: 0.12652749410959716", + "Likelihood: 0.19639128918510992", + "Likelihood: 0.2415576613596178", + "Likelihood: 0.09604707058376027", + "Likelihood: 0.28750764180437866", + "Likelihood: 0.24919591544474512", + "Likelihood: 0.274778227098305", + "Likelihood: 0.2374325225438439", + "Likelihood: 0.04026561403649194", + "Likelihood: 0.30851987252199525", + "Likelihood: 0.2539326614123119", + "Likelihood: 0.22240336708649686", + "Likelihood: 0.06308085231933079", + "Likelihood: 0.29691304824544335", + "Likelihood: 0.012924245331227907", + "Likelihood: 0.13357263345599762", + "Likelihood: 0.09127224211132522", + "Likelihood: 0.1266870065762547", + "Likelihood: 0.012317956530270189", + "Likelihood: 0.2959606000341796", + "Likelihood: 0.10529457211718106", + "Likelihood: 0.1633647269018937", + "Likelihood: 0.07753950010356818", + "Likelihood: 0.04601490267012351", + "Likelihood: 0.16832088271177892", + "Likelihood: 0.11306601044796183", + "Likelihood: 0.035752176180569355", + "Likelihood: 0.20018458853477847", + "Likelihood: 0.10357599631968964", + "Likelihood: 0.059203269755036585", + "Likelihood: 0.09755562175052834", + "Likelihood: 0.0118669969695027", + "Likelihood: 0.20409757576300083", + "Likelihood: 0.14146255089478577", + "Likelihood: 0.09844307356305221", + "Likelihood: 0.27664125197319683", + "Likelihood: 0.14629027399203542", + "Likelihood: 0.044800849945163077", + "Likelihood: 0.10721413687798743", + "Likelihood: 0.032917038774235054", + "Likelihood: 0.30817117531304794", + "Likelihood: 0.02342674750367045", + "Likelihood: 0.0778049896806776", + "Likelihood: 0.23090805824277394", + "Likelihood: 0.27274279162753634", + "Likelihood: 0.30725766535893934", + "Likelihood: 0.04474933375044851", + "Likelihood: 0.0975122217369741", + "Likelihood: 0.20114385552779196", + "Likelihood: 0.08075410891280169", + "Likelihood: 0.1267805230428327", + "Likelihood: 0.15253364523496202", + "Likelihood: 0.2193612063668295", + "Likelihood: 0.185147775583987", + "Likelihood: 0.2579746378868788", + "Likelihood: 0.17799175066867035", + "Likelihood: 0.15924699072104195", + "Likelihood: 0.1346365129110876", + "Likelihood: 0.2662571154541173", + "Likelihood: 0.18360844758799444", + "Likelihood: 0.030271387514711895", + "Likelihood: 0.09431224010006911", + "Likelihood: 0.10629135881078418", + "Likelihood: 0.09067163765497888", + "Likelihood: 0.2698491886267719", + "Likelihood: 0.1074381074175823", + "Likelihood: 0.26901654100619005", + "Likelihood: 0.13904602997913457", + "Likelihood: 0.020635172590878284", + "Likelihood: 0.0012030053737768732", + "Likelihood: 0.035326718538929415", + "Likelihood: 0.157088687295661", + "Likelihood: 0.019194151007662474", + "Likelihood: 0.15817675241928897", + "Likelihood: 0.24161034311240853", + "Likelihood: 0.05983804716684733", + "Likelihood: 0.307518943991126", + "Likelihood: 0.30764784573421106", + "Likelihood: 0.12181377779438138", + "Likelihood: 0.19499883093156298", + "Likelihood: 0.27862342731985723", + "Likelihood: 0.24148567228040838", + "Likelihood: 0.014385438494390815", + "Likelihood: 0.10830123123638587", + "Likelihood: 0.25323160030991376", + "Likelihood: 0.2578540647809833", + "Likelihood: 0.12259439536663229", + "Likelihood: 0.19480174425040497", + "Likelihood: 0.2586908662186438", + "Likelihood: 0.03217724113962828", + "Likelihood: 0.06457665020495006", + "Likelihood: 0.20197560472470436", + "Likelihood: 0.276747976279015", + "Likelihood: 0.22861803383411788", + "Likelihood: 0.1278025596392696", + "Likelihood: 0.10628811836460192", + "Likelihood: 0.0596580711389709", + "Likelihood: 0.19667168516840516", + "Likelihood: 0.14475075567298434", + "Likelihood: 0.1780651552662241", + "Likelihood: 0.2134776635206307", + "Likelihood: 0.06410633060614045", + "Likelihood: 0.03126326736444316", + "Likelihood: 0.13048188108623396", + "Likelihood: 0.05831233204496781", + "Likelihood: 0.2162557831608072", + "Likelihood: 0.029990481747231006", + "Likelihood: 0.061476385390187245", + "Likelihood: 0.28184967450631043", + "Likelihood: 0.1605458960164334", + "Likelihood: 0.042062046758536094", + "Likelihood: 0.30807701105561863", + "Likelihood: 0.03481683232569585", + "Likelihood: 0.1650526596636246", + "Likelihood: 0.22194739333525343", + "Likelihood: 0.12095212220425061", + "Likelihood: 0.30451298816687794", + "Likelihood: 0.06351120345796944", + "Likelihood: 0.1866371519392235", + "Likelihood: 0.027142328810145326", + "Likelihood: 0.2121181590866515", + "Likelihood: 0.16745697661697004", + "Likelihood: 0.2575704756297839", + "Likelihood: 0.21602666776410473", + "Likelihood: 0.11096922127925404", + "Likelihood: 0.16793133143408034", + "Likelihood: 0.14861730240975185", + "Likelihood: 0.05023850549870651", + "Likelihood: 0.05060874074247244", + "Likelihood: 0.08720595548273757", + "Likelihood: 0.017594139705375447", + "Likelihood: 0.3025998625695838", + "Likelihood: 0.10520566811590722", + "Likelihood: 0.09108578504687391", + "Likelihood: 0.06868085902022232", + "Likelihood: 0.23122366846244577", + "Likelihood: 0.059366778735689775", + "Likelihood: 0.26959725980577665", + "Likelihood: 0.02889491198603959", + "Likelihood: 0.13763521926764447", + "Likelihood: 0.3034231478153148", + "Likelihood: 0.11869833845630993", + "Likelihood: 0.10690830965597924", + "Likelihood: 0.2546975936456455", + "Likelihood: 0.11520575474812818", + "Likelihood: 0.010427260019763478", + "Likelihood: 0.12906618264537287", + "Likelihood: 0.038462561157925346", + "Likelihood: 0.2536188535112179", + "Likelihood: 0.02270241191818071", + "Likelihood: 0.2852247521638583", + "Likelihood: 0.046928088419171114", + "Likelihood: 0.055777648966237374", + "Likelihood: 0.056573905343925215", + "Likelihood: 0.2754356543842008", + "Likelihood: 0.06405834058195387", + "Likelihood: 0.17540203280651656", + "Likelihood: 0.0642460115649518", + "Likelihood: 0.10736490430816187", + "Likelihood: 0.043233843869353986", + "Likelihood: 0.2821368233651277", + "Likelihood: 0.23229871299576155", + "Likelihood: 0.23737565056402948", + "Likelihood: 0.11714186089487479", + "Likelihood: 0.2643305101023996", + "Likelihood: 0.2563470888275016", + "Likelihood: 0.14005609062442637", + "Likelihood: 0.22355016098941388", + "Likelihood: 0.0403065091330471", + "Likelihood: 0.14944468648824388", + "Likelihood: 0.22568855898587664", + "Likelihood: 0.3126794685647815", + "Likelihood: 0.2105186492245128", + "Likelihood: 0.08251454534698092", + "Likelihood: 0.03263443827633579", + "Likelihood: 0.14817827998980812", + "Likelihood: 0.002125566377687852", + "Likelihood: 0.21284353388929653", + "Likelihood: 0.015996169180001532", + "Likelihood: 0.1766822617580179", + "Likelihood: 0.05900500519080943", + "Likelihood: 0.042336416541452045", + "Likelihood: 0.017204302750339066", + "Likelihood: 0.20121923451011695", + "Likelihood: 0.1793412163994307", + "Likelihood: 0.2481899365865573", + "Likelihood: 0.11345678336058308", + "Likelihood: 0.3174987798949667", + "Likelihood: 0.2623642550694098", + "Likelihood: 0.01835930402370236", + "Likelihood: 0.14349860508681933", + "Likelihood: 0.1448918024639299", + "Likelihood: 0.18439529894665324", + "Likelihood: 0.04166884364972409", + "Likelihood: 0.17161796484485142", + "Likelihood: 0.17309786296333793", + "Likelihood: 0.22147533409129258", + "Likelihood: 0.1563625464348293", + "Likelihood: 0.12980739170248665", + "Likelihood: 0.05540608026367823", + "Likelihood: 0.006891317072621018", + "Likelihood: 0.23571018275978264", + "Likelihood: 0.32143709964127837", + "Likelihood: 0.21731384880167076", + "Likelihood: 0.02024260525840962", + "Likelihood: 0.024912778757500833", + "Likelihood: 0.20570015264662497", + "Likelihood: 0.23217768244711132", + "Likelihood: 0.14558384697334134", + "Likelihood: 0.2936573700550818", + "Likelihood: 0.11010312574112172", + "Likelihood: 0.2794041732167157", + "Likelihood: 0.09997040582015607", + "Likelihood: 0.14146770550069337", + "Likelihood: 0.14949017500071468", + "Likelihood: 0.25959116315753167", + "Likelihood: 0.17017685203916486", + "Likelihood: 0.2582180312790977", + "Likelihood: 0.2607511504308378", + "Likelihood: 0.1940459641802936", + "Likelihood: 0.034401506259649266", + "Likelihood: 0.17745625633033207", + "Likelihood: 0.2103742118347415", + "Likelihood: 0.09271008332512337", + "Likelihood: 0.23277207353139545", + "Likelihood: 0.035406593318874274", + "Likelihood: 0.1922682727127224", + "Likelihood: 0.00851129908845363", + "Likelihood: 0.08326834193552975", + "Likelihood: 0.27742042688606655", + "Likelihood: 0.03319004108163855", + "Likelihood: 0.11457311995357725", + "Likelihood: 0.10750274577715777", + "Likelihood: 0.09092483521499958", + "Likelihood: 0.10687658962394483", + "Likelihood: 0.05468273310517307", + "Likelihood: 0.021720167161855097", + "Likelihood: 0.04725070964449167", + "Likelihood: 0.07205162752298291", + "Likelihood: 0.09140540276131902", + "Likelihood: 0.11361126025668791", + "Likelihood: 0.3069313293967986", + "Likelihood: 0.19809724117803476", + "Likelihood: 0.21009726610712354", + "Likelihood: 0.06828009500759896", + "Likelihood: 0.2675215142598872", + "Likelihood: 0.1705002399274131", + "Likelihood: 0.31650288196562415", + "Likelihood: 0.08033909376665496", + "Likelihood: 0.27234134216613654", + "Likelihood: 0.26689158395685403", + "Likelihood: 0.15868824357716277", + "Likelihood: 0.07322111764843202", + "Likelihood: 0.29820826741389206", + "Likelihood: 0.04126253876680423", + "Likelihood: 0.14400523452028255", + "Likelihood: 0.0047972160876476695", + "Likelihood: 0.25475805715493294", + "Likelihood: 0.31120672156599616", + "Likelihood: 0.18226117659501004", + "Likelihood: 0.11711566817476596", + "Likelihood: 0.22775717516153865", + "Likelihood: 0.03757292397809907", + "Likelihood: 0.02012320950490989", + "Likelihood: 0.19214091609382802", + "Likelihood: 0.14029110720932395", + "Likelihood: 0.06691957409664359", + "Likelihood: 0.2639758814179168", + "Likelihood: 0.208147824259082", + "Likelihood: 0.02140034867715702", + "Likelihood: 0.11039854442651958", + "Likelihood: 0.21059596377293238", + "Likelihood: 0.02965112501298849", + "Likelihood: 0.07979100080083942", + "Likelihood: 0.15808295161644859", + "Likelihood: 0.2105934945573907", + "Likelihood: 0.15698240342802258", + "Likelihood: 0.2476094411467324", + "Likelihood: 0.13476370037427593", + "Likelihood: 0.13125243597265648", + "Likelihood: 0.21008156815759127", + "Likelihood: 0.02364246515558471", + "Likelihood: 0.023917976219436372", + "Likelihood: 0.09206620076250302", + "Likelihood: 0.15154147526645032", + "Likelihood: 0.035362091540294696", + "Likelihood: 0.08346407677642166", + "Likelihood: 0.2085069997184432", + "Likelihood: 0.2687580700965404", + "Likelihood: 0.03893853914272468", + "Likelihood: 0.06877718337994787", + "Likelihood: 0.004317475905587865", + "Likelihood: 0.2768870360448832", + "Likelihood: 0.15833931576908747", + "Likelihood: 0.2749835314336819", + "Likelihood: 0.09557135977579682", + "Likelihood: 0.16709337121119885", + "Likelihood: 0.20661166656638766", + "Likelihood: 0.11096402404294416", + "Likelihood: 0.028324266273224506", + "Likelihood: 0.19990358795998392", + "Likelihood: 0.002625163399267099", + "Likelihood: 0.20326387844769622", + "Likelihood: 0.21629277341319328", + "Likelihood: 0.20519533842968196", + "Likelihood: 0.30515196698965363", + "Likelihood: 0.216750536125592", + "Likelihood: 0.055081270772431565", + "Likelihood: 0.0919390900848464", + "Likelihood: 0.12436830095923553", + "Likelihood: 0.10950322459447448", + "Likelihood: 0.22087220628904516", + "Likelihood: 0.06911193016344762", + "Likelihood: 0.05875600813734538", + "Likelihood: 0.043405979228010046", + "Likelihood: 0.028875939298918588", + "Likelihood: 0.20728115620391996", + "Likelihood: 0.0664889926066232", + "Likelihood: 0.1954130218917373", + "Likelihood: 0.04931841837569984", + "Likelihood: 0.166985112650432", + "Likelihood: 0.19527859980923004", + "Likelihood: 0.218016999472748", + "Likelihood: 0.09009570346502702", + "Likelihood: 0.15065025484271174", + "Likelihood: 0.28595766751122453", + "Likelihood: 0.272437969259055", + "Likelihood: 0.3139397696172959", + "Likelihood: 0.03158120946619017", + "Likelihood: 0.013723392542419183", + "Likelihood: 0.060371107575977176", + "Likelihood: 0.04065652165216404", + "Likelihood: 0.24662719029456853", + "Likelihood: 0.2697790936871906", + "Likelihood: 0.2812567512289653", + "Likelihood: 0.13935379242120285", + "Likelihood: 0.07179330136533568", + "Likelihood: 0.2521599343685908", + "Likelihood: 0.11694633602728224", + "Likelihood: 0.015689289768155968", + "Likelihood: 0.23825255765165645", + "Likelihood: 0.1400965993405384", + "Likelihood: 0.058487193220690334", + "Likelihood: 0.19782084941763778", + "Likelihood: 0.30514739826859094", + "Likelihood: 0.13778516310626054", + "Likelihood: 0.06260611196470736", + "Likelihood: 0.27587660364541877", + "Likelihood: 0.09193822617623665", + "Likelihood: 0.1489556435244977", + "Likelihood: 0.06550718386266008", + "Likelihood: 0.22622531105441707", + "Likelihood: 0.29842166152319854", + "Likelihood: 0.07674206340979263", + "Likelihood: 0.04935678547455577", + "Likelihood: 0.18827161373547946", + "Likelihood: 0.004726176869760197", + "Likelihood: 0.10599999374555992", + "Likelihood: 0.24079919993209611", + "Likelihood: 0.11877337943731849", + "Likelihood: 0.011074860679057351", + "Likelihood: 0.1256507342733128", + "Likelihood: 0.23745010856366502", + "Likelihood: 0.21497570589620296", + "Likelihood: 0.1777074486351679", + "Likelihood: 0.2778289094936174", + "Likelihood: 0.319163151658687", + "Likelihood: 0.04671906811841161", + "Likelihood: 0.24532406803528015", + "Likelihood: 0.009918613350459717", + "Likelihood: 0.12705502090412077", + "Likelihood: 0.0895670772390444", + "Likelihood: 0.27964857207906063", + "Likelihood: 0.24951031700613124", + "Likelihood: 0.28833047891837715", + "Likelihood: 0.08132725984423979", + "Likelihood: 0.21861553867456085", + "Likelihood: 0.05026015486824147", + "Likelihood: 0.0954008128333171", + "Likelihood: 0.09988933988390353", + "Likelihood: 0.2002740548697938", + "Likelihood: 0.07738584614085757", + "Likelihood: 0.03694444612827588", + "Likelihood: 0.20146199179416463", + "Likelihood: 0.0862156283627414", + "Likelihood: 0.261590725359016", + "Likelihood: 0.08631882051231554", + "Likelihood: 0.22390871992967865", + "Likelihood: 0.10887489684979171", + "Likelihood: 0.0032541425234557646", + "Likelihood: 0.19252587204636554", + "Likelihood: 0.1332047921987199", + "Likelihood: 0.27935258547189196", + "Likelihood: 0.29425964681115957", + "Likelihood: 0.3223664269930873", + "Likelihood: 0.05847227363667512", + "Likelihood: 0.07970583532816639", + "Likelihood: 0.24254586731851477", + "Likelihood: 0.12651951492459781", + "Likelihood: 0.2525508002808903", + "Likelihood: 0.06944064657529418", + "Likelihood: 0.10393722849391958", + "Likelihood: 0.17872043677659782", + "Likelihood: 0.0174799829257536", + "Likelihood: 0.2825469481104415", + "Likelihood: 0.10991066383516579", + "Likelihood: 0.14148694467301756", + "Likelihood: 0.018703623911508763", + "Likelihood: 0.03197018296068721", + "Likelihood: 0.30532660205194856", + "Likelihood: 0.03131187576319525", + "Likelihood: 0.21616158105412814", + "Likelihood: 0.18769999032462586", + "Likelihood: 0.11129237993609466", + "Likelihood: 0.21521905516268222", + "Likelihood: 0.19827996839402615", + "Likelihood: 0.10141338791547412", + "Likelihood: 0.2643867104653616", + "Likelihood: 0.1094980990839153", + "Likelihood: 0.04243724859037626", + "Likelihood: 0.11908474709939319", + "Likelihood: 0.04891691829051669", + "Likelihood: 0.17349408308143835", + "Likelihood: 0.16438193927979386", + "Likelihood: 0.16516734409990863", + "Likelihood: 0.0941750566809898", + "Likelihood: 0.15361741057560663", + "Likelihood: 0.07283988515734226", + "Likelihood: 0.1250241221868541", + "Likelihood: 0.056680920051566", + "Likelihood: 0.08666264912732262", + "Likelihood: 0.15511978958084324", + "Likelihood: 0.32325963779949524", + "Likelihood: 0.2975333407446941", + "Likelihood: 0.03463240656920151", + "Likelihood: 0.2195935784535235", + "Likelihood: 0.24900494679491422", + "Likelihood: 0.1392699240186077", + "Likelihood: 0.07159144366069907", + "Likelihood: 0.15851595252555398", + "Likelihood: 0.2206257205122031", + "Likelihood: 0.17353256304156556", + "Likelihood: 0.010466896845686609", + "Likelihood: 0.08654200604460417", + "Likelihood: 0.06707563539770305", + "Likelihood: 0.22298217027019052", + "Likelihood: 0.06300363724026181", + "Likelihood: 0.24994935948933517", + "Likelihood: 0.19676793225165268", + "Likelihood: 0.1770037999542928", + "Likelihood: 0.15618801661063209", + "Likelihood: 0.11976318005089398", + "Likelihood: 0.15661557950747268", + "Likelihood: 0.2733918862871629", + "Likelihood: 0.09578796332534645", + "Likelihood: 0.05434168447315235", + "Likelihood: 0.04134456174545046", + "Likelihood: 0.2100305473688497", + "Likelihood: 0.07422354129177207", + "Likelihood: 0.09024569069877596", + "Likelihood: 0.06802562528183602", + "Likelihood: 0.20114208254131744", + "Likelihood: 0.05396663687478327", + "Likelihood: 0.2111185218936651", + "Likelihood: 0.2965659022630742", + "Likelihood: 0.26592795992934815", + "Likelihood: 0.056976809212110624", + "Likelihood: 0.10534213045395595", + "Likelihood: 0.04554946073272281", + "Likelihood: 0.17530782478013615", + "Likelihood: 0.22311706069860568", + "Likelihood: 0.033106328202969305", + "Likelihood: 0.1500022087793055", + "Likelihood: 0.1627454693359542", + "Likelihood: 0.13027911910055226", + "Likelihood: 0.15837835587302335", + "Likelihood: 0.16623268688690518", + "Likelihood: 0.09296233762215475", + "Likelihood: 0.25826878548891674", + "Likelihood: 0.07072675438103883", + "Likelihood: 0.31467680944667364", + "Likelihood: 0.2622532040308649", + "Likelihood: 0.059878883402762144", + "Likelihood: 0.0694028318249895", + "Likelihood: 0.13988692911609743", + "Likelihood: 0.23898483019234842", + "Likelihood: 0.2968057924795872", + "Likelihood: 0.022408290658250913", + "Likelihood: 0.10155785743511796", + "Likelihood: 0.209097077553315", + "Likelihood: 0.053622246990535374", + "Likelihood: 0.023098568790740716", + "Likelihood: 0.2140901945843001", + "Likelihood: 0.11349253648556024", + "Likelihood: 0.06990067244716139", + "Likelihood: 0.32108799784174236", + "Likelihood: 0.07665648735189717", + "Likelihood: 0.22207497419406486", + "Likelihood: 0.2588596049895245", + "Likelihood: 0.16734446924934993", + "Likelihood: 0.10036397705228874", + "Likelihood: 0.1707684305426654", + "Likelihood: 0.1759863169110055", + "Likelihood: 0.2164804013408232", + "Likelihood: 0.27983298319689376", + "Likelihood: 0.2594341836696699", + "Likelihood: 0.0033549228933689476", + "Likelihood: 0.13071345663369877", + "Likelihood: 0.16099115971136171", + "Likelihood: 0.23482682447971992", + "Likelihood: 0.0701368556619368", + "Likelihood: 0.21319788169752757", + "Likelihood: 0.13565264243398376", + "Likelihood: 0.28085281053128874", + "Likelihood: 0.22688446783275135", + "Likelihood: 0.1433963065600874", + "Likelihood: 0.23869633826775916", + "Likelihood: 0.24661733676194303", + "Likelihood: 0.06683408198399833", + "Likelihood: 0.32212686501511195", + "Likelihood: 0.155283278792899", + "Likelihood: 0.05418324087558911", + "Likelihood: 0.04925360594595951", + "Likelihood: 0.31865005252174095", + "Likelihood: 0.14330966613494228", + "Likelihood: 0.14561863630981775", + "Likelihood: 0.27399713554159816", + "Likelihood: 0.2615795527939423", + "Likelihood: 0.19459655467437068", + "Likelihood: 0.2777710146757132", + "Likelihood: 0.1151959824446337", + "Likelihood: 0.04937104120144556", + "Likelihood: 0.017934008861104023", + "Likelihood: 0.24680349233878085", + "Likelihood: 0.025053410059846386", + "Likelihood: 0.12175133021948499", + "Likelihood: 0.306816990335239", + "Likelihood: 0.09016380459091906", + "Likelihood: 0.12872670440855138", + "Likelihood: 0.032429876431466914", + "Likelihood: 0.24336586309708544", + "Likelihood: 0.02487250905305853", + "Likelihood: 0.062134291881366134", + "Likelihood: 0.29269367879590313", + "Likelihood: 0.052543574161261965", + "Likelihood: 0.08524011333085756", + "Likelihood: 0.1453462966690393", + "Likelihood: 0.023916878605452885", + "Likelihood: 0.26227240310241834", + "Likelihood: 0.14668135271455257", + "Likelihood: 0.026370217028023987", + "Likelihood: 0.20444384199182014", + "Likelihood: 0.09462701613347302", + "Likelihood: 0.0766024456284141", + "Likelihood: 0.24006725228162906", + "Likelihood: 0.040414562824117935", + "Likelihood: 0.11251260896357711", + "Likelihood: 0.09549650527494685", + "Likelihood: 0.19458142755535565", + "Likelihood: 0.18990762278748305", + "Likelihood: 0.2711606444958198", + "Likelihood: 0.254433774073057", + "Likelihood: 0.13320224010026788", + "Likelihood: 0.15935608197977455", + "Likelihood: 0.24784180936940484", + "Likelihood: 0.007063940641053073", + "Likelihood: 0.18244496610476282", + "Likelihood: 0.26005222705007897", + "Likelihood: 0.2894705758529006", + "Likelihood: 0.19921342117575302", + "Likelihood: 0.18662866936077452", + "Likelihood: 0.19391358092229843", + "Likelihood: 0.02307624603679313", + "Likelihood: 0.19472975439082002", + "Likelihood: 0.016577620273254004", + "Likelihood: 0.10750146374553729", + "Likelihood: 0.04536123850946084", + "Likelihood: 0.05718052394784842", + "Likelihood: 0.24221112060957967", + "Likelihood: 0.19970755754395075", + "Likelihood: 0.29792503939841214", + "Likelihood: 0.0029405471408439857", + "Likelihood: 0.184365890341908", + "Likelihood: 0.20914915771836942", + "Likelihood: 0.29578492123476585", + "Likelihood: 0.22368678377561563", + "Likelihood: 0.10248339568650283", + "Likelihood: 0.17236953324301363", + "Likelihood: 0.017325504162680142", + "Likelihood: 0.27711237603762034", + "Likelihood: 0.0691222001577861", + "Likelihood: 0.04353532200155048", + "Likelihood: 0.10882767311775406", + "Likelihood: 0.08266585544728605", + "Likelihood: 0.19693887319488185", + "Likelihood: 0.1784809174738944", + "Likelihood: 0.09648335039159876", + "Likelihood: 0.093455428203795", + "Likelihood: 0.29914259688552053", + "Likelihood: 0.16442961299593586", + "Likelihood: 0.2919343409774493", + "Likelihood: 0.0077983513568743645", + "Likelihood: 0.05156785112124006", + "Likelihood: 0.17938749883416763", + "Likelihood: 0.027787701515850655", + "Likelihood: 0.12827631144538307", + "Likelihood: 0.11221748792926727", + "Likelihood: 0.06594506865999868", + "Likelihood: 0.1010835011060415", + "Likelihood: 0.09326423568949326", + "Likelihood: 0.16085064098893526", + "Likelihood: 0.23959695906666892", + "Likelihood: 0.09358322714594634", + "Likelihood: 0.1638126310778908", + "Likelihood: 0.21904293259689972", + "Likelihood: 0.10404950804217872", + "Likelihood: 0.13333352655586392", + "Likelihood: 0.24616465759269937", + "Likelihood: 0.28294700591468064", + "Likelihood: 0.14001996604436467", + "Likelihood: 0.029948282387481154", + "Likelihood: 0.1704713320130741", + "Likelihood: 0.2165465592460891", + "Likelihood: 0.3080500693446403", + "Likelihood: 0.2405573870248584", + "Likelihood: 0.2665854278359214", + "Likelihood: 0.2753008550965409", + "Likelihood: 0.2235215573369762", + "Likelihood: 0.2586234477098668", + "Likelihood: 0.23305417343357127", + "Likelihood: 0.09101016714551508", + "Likelihood: 0.2560083217538093", + "Likelihood: 0.20556319868939052", + "Likelihood: 0.2212038926178159", + "Likelihood: 0.05149599291429548", + "Likelihood: 0.2935021831636647", + "Likelihood: 0.1947353333802959", + "Likelihood: 0.17134305685133516", + "Likelihood: 0.045182525988193355", + "Likelihood: 0.13125332363079364", + "Likelihood: 0.004168359417385088", + "Likelihood: 0.012345847002295908", + "Likelihood: 0.29563897276578927", + "Likelihood: 0.09949244341593967", + "Likelihood: 0.06082866044871284", + "Likelihood: 0.0020646978655663325", + "Likelihood: 0.1465711428197996", + "Likelihood: 0.1406437405416253", + "Likelihood: 0.2783359280495716", + "Likelihood: 0.20197208027356", + "Likelihood: 0.3034878447815952", + "Likelihood: 0.178838073202521", + "Likelihood: 0.030016839956771627", + "Likelihood: 0.18488256796104754", + "Likelihood: 0.24357259962333486", + "Likelihood: 0.18108032470267882", + "Likelihood: 0.32003990291144124", + "Likelihood: 0.2464236574327885", + "Likelihood: 0.07982157763715712", + "Likelihood: 0.19278871713089638", + "Likelihood: 0.1718802204142227", + "Likelihood: 0.03047338254694096", + "Likelihood: 0.05690091396223237", + "Likelihood: 0.01597370907848816", + "Likelihood: 0.010321678675423848", + "Likelihood: 0.2767075918434004", + "Likelihood: 0.2922496459106174", + "Likelihood: 0.2661004206785118", + "Likelihood: 0.11618426212404925", + "Likelihood: 0.19722844070373113", + "Likelihood: 0.20304687594601561", + "Likelihood: 0.16971160437714342", + "Likelihood: 0.26449179788408855", + "Likelihood: 0.19476138426102255", + "Likelihood: 0.07837327249692579", + "Likelihood: 0.1252137795209896", + "Likelihood: 0.2896455103403659", + "Likelihood: 0.036006150888931464", + "Likelihood: 0.00969718044720563", + "Likelihood: 0.05290896546538171", + "Likelihood: 0.09733658148519761", + "Likelihood: 0.1313549767460562", + "Likelihood: 0.09482350492613038", + "Likelihood: 0.280996850183214", + "Likelihood: 0.14176197520329276", + "Likelihood: 0.10357514254647229", + "Likelihood: 0.036048275734567405", + "Likelihood: 0.18513064551724528", + "Likelihood: 0.010197245175223489", + "Likelihood: 0.2065779985017766", + "Likelihood: 0.047397203401226884", + "Likelihood: 0.16681555671617393", + "Likelihood: 0.025055949485654268", + "Likelihood: 0.1766156627680464", + "Likelihood: 0.12612366981290787", + "Likelihood: 0.05173998819760383", + "Likelihood: 0.193340302808469", + "Likelihood: 0.18185060812136716", + "Likelihood: 0.12504480193032705", + "Likelihood: 0.16878056820520895", + "Likelihood: 0.03785336057337525", + "Likelihood: 0.016030706172907496", + "Likelihood: 0.0447904645858992", + "Likelihood: 0.12895903292834168", + "Likelihood: 0.07218925637141202", + "Likelihood: 0.04417364907187509", + "Likelihood: 0.1440391887921619", + "Likelihood: 0.08850934007461059", + "Likelihood: 0.017011068588304225", + "Likelihood: 0.17125115059749207", + "Likelihood: 0.21360522753570016", + "Likelihood: 0.012392318476747289", + "Likelihood: 0.24334431463451275", + "Likelihood: 0.30814551451540195", + "Likelihood: 0.16844489550101283", + "Likelihood: 0.16260466062828105", + "Likelihood: 0.24024919401161143", + "Likelihood: 0.29120258585277997", + "Likelihood: 0.03316882941425265", + "Likelihood: 0.1852453132543558", + "Likelihood: 0.019778258076019947", + "Likelihood: 0.19655581476848258", + "Likelihood: 0.178447529209965", + "Likelihood: 0.09041280139243363", + "Likelihood: 0.15912089365463897", + "Likelihood: 0.05048422386343573", + "Likelihood: 0.0865279902709634", + "Likelihood: 0.04350463729176894", + "Likelihood: 0.1406678929902689", + "Likelihood: 0.2076560321811661", + "Likelihood: 0.1961873938459254", + "Likelihood: 0.08083484936692305", + "Likelihood: 0.06697009796981507", + "Likelihood: 0.037601304797340494", + "Likelihood: 0.032205653060328555", + "Likelihood: 0.13838451930639206", + "Likelihood: 0.17408019943168948", + "Likelihood: 0.045253895999163664", + "Likelihood: 0.05459820369816108", + "Likelihood: 0.069600287202832", + "Likelihood: 0.1043255528285284", + "Likelihood: 0.18187346768845086", + "Likelihood: 0.2922044727753451", + "Likelihood: 0.1953946298951597", + "Likelihood: 0.1940036550073875", + "Likelihood: 0.08651236135758493", + "Likelihood: 0.23552349261353187", + "Likelihood: 0.051186367392744", + "Likelihood: 0.13725218333066758", + "Likelihood: 0.3162810819303398", + "Likelihood: 0.14214038383364663", + "Likelihood: 0.2604850080176812", + "Likelihood: 0.2848780921040411", + "Likelihood: 0.028384466734436436", + "Likelihood: 0.020690995574330538", + "Likelihood: 0.019767113820587795", + "Likelihood: 0.23990563418084423", + "Likelihood: 0.16050085099555034", + "Likelihood: 0.21328410513218837", + "Likelihood: 0.18798546899905974", + "Likelihood: 0.2590651290061526", + "Likelihood: 0.22949822133728348", + "Likelihood: 0.31317438833029376", + "Likelihood: 0.1661070905137651", + "Likelihood: 0.24398009899805126", + "Likelihood: 0.017592068223328556", + "Likelihood: 0.27293204225435475", + "Likelihood: 0.08898114358085685", + "Likelihood: 0.06826610170693", + "Likelihood: 0.20775212125268722", + "Likelihood: 0.24996064859413641", + "Likelihood: 0.17955957428931102", + "Likelihood: 0.26785729610408393", + "Likelihood: 0.09029673985316893", + "Likelihood: 0.18321529732327388", + "Likelihood: 0.2057721078950934", + "Likelihood: 0.04536261651276833", + "Likelihood: 0.17364458577686684", + "Likelihood: 0.1489950232515898", + "Likelihood: 0.21384856722973863", + "Likelihood: 0.07737341044096782", + "Likelihood: 0.023844864406640486", + "Likelihood: 0.22683286015745058", + "Likelihood: 0.1292211977882412", + "Likelihood: 0.04169435755394817", + "Likelihood: 0.2916535673298963", + "Likelihood: 0.2717399128135376", + "Likelihood: 0.003414028015648644", + "Likelihood: 0.1849183381830735", + "Likelihood: 0.24254406578305676", + "Likelihood: 0.13175728498937342", + "Likelihood: 0.06021265221794055", + "Likelihood: 0.2925713058425434", + "Likelihood: 0.09177176935399506", + "Likelihood: 0.1272447005344317", + "Likelihood: 0.04844747717907579", + "Likelihood: 0.23454246983392932", + "Likelihood: 0.0401503516781159", + "Likelihood: 0.05543146208892015", + "Likelihood: 0.1094418814785909", + "Likelihood: 0.03802207674814082", + "Likelihood: 0.10909943749042425", + "Likelihood: 0.022888071243956604", + "Likelihood: 0.25050200675464984", + "Likelihood: 0.053100363489543737", + "Likelihood: 0.12943766981053764", + "Likelihood: 0.1409389404843201", + "Likelihood: 0.21095615473934404", + "Likelihood: 0.2632446181620843", + "Likelihood: 0.03934992512413706", + "Likelihood: 0.24345192360762816", + "Likelihood: 0.3182870046933624", + "Likelihood: 0.2595134949773875", + "Likelihood: 0.24271985962631695", + "Likelihood: 0.047750543063613336", + "Likelihood: 0.3031962972162401", + "Likelihood: 0.07429613955967852", + "Likelihood: 0.10647927739908757", + "Likelihood: 0.2538048511913272", + "Likelihood: 0.11718144876262086", + "Likelihood: 0.21210428942159748", + "Likelihood: 0.2547425180889467", + "Likelihood: 0.05787330276070248", + "Likelihood: 0.19296492505233634", + "Likelihood: 0.03561617494639305", + "Likelihood: 0.168366155013624", + "Likelihood: 0.14947424749832025", + "Likelihood: 0.19103561930019686", + "Likelihood: 0.04939537206030004", + "Likelihood: 0.00207877108206773", + "Likelihood: 0.1612270943173625", + "Likelihood: 0.06404570861301558", + "Likelihood: 0.05834044849162826", + "Likelihood: 0.26287006197243107", + "Likelihood: 0.04403861344201299", + "Likelihood: 0.31233396538101366", + "Likelihood: 0.2840076302970903", + "Likelihood: 0.18325680534318894", + "Likelihood: 0.20330421341341723", + "Likelihood: 0.01988107116921178", + "Likelihood: 0.05324807793488442", + "Likelihood: 0.25299939088151163", + "Likelihood: 0.2028515260626711", + "Likelihood: 0.18707311031916368", + "Likelihood: 0.06002587105424368", + "Likelihood: 0.15364888413575462", + "Likelihood: 0.16365435582992088", + "Likelihood: 0.2406594439892895", + "Likelihood: 0.30893151644482003", + "Likelihood: 0.17856603095682777", + "Likelihood: 0.047065299898151225", + "Likelihood: 0.08921698728068687", + "Likelihood: 0.14122477895286992", + "Likelihood: 0.23052782469436423", + "Likelihood: 0.3080802399558309", + "Likelihood: 0.21813892800329837", + "Likelihood: 0.30134671132681157", + "Likelihood: 0.08433206354528441", + "Likelihood: 0.03912135059145844", + "Likelihood: 0.16762171567815268", + "Likelihood: 0.32415117575961067", + "Likelihood: 0.23186694316458195", + "Likelihood: 0.10203927095145404", + "Likelihood: 0.1968238899918459", + "Likelihood: 0.1444424259879095", + "Likelihood: 0.0350534308733113", + "Likelihood: 0.2679026986368898", + "Likelihood: 0.21963192782017205", + "Likelihood: 0.1775490463330152", + "Likelihood: 0.3091785694414404", + "Likelihood: 0.24806577579035133", + "Likelihood: 0.24171037587646807", + "Likelihood: 0.2790047640485742", + "Likelihood: 0.08398276869471025", + "Likelihood: 0.27111775862714355", + "Likelihood: 0.07211145783377503", + "Likelihood: 0.23756249338427654", + "Likelihood: 0.1254547822418057", + "Likelihood: 0.019710467555221076", + "Likelihood: 0.08680266105373748", + "Likelihood: 0.30375305474282355", + "Likelihood: 0.21529044079895324", + "Likelihood: 0.13304876427072157", + "Likelihood: 0.19444553005317927", + "Likelihood: 0.05239562999206824", + "Likelihood: 0.09524208135726844", + "Likelihood: 0.055330673789913694", + "Likelihood: 0.040337445534063515", + "Likelihood: 0.059366366395610375", + "Likelihood: 0.19763277227420878", + "Likelihood: 0.25042775065220074", + "Likelihood: 0.25984719057620664", + "Likelihood: 0.0011414902487738765", + "Likelihood: 0.19363078214612248", + "Likelihood: 0.05422246659582356", + "Likelihood: 0.25431637880218744", + "Likelihood: 0.11667564159703628", + "Likelihood: 0.07168391323111109", + "Likelihood: 0.15185245121061425", + "Likelihood: 0.040017284535356815", + "Likelihood: 0.1311709786715032", + "Likelihood: 0.029556885463892374", + "Likelihood: 0.2931054742142504", + "Likelihood: 0.05799979472935344", + "Likelihood: 0.10625413268102347", + "Likelihood: 0.273035761073767", + "Likelihood: 0.1254700790233716", + "Likelihood: 0.11659986604328344", + "Likelihood: 0.11440245075270977", + "Likelihood: 0.036668383207299746", + "Likelihood: 0.1013862352180302", + "Likelihood: 0.16338301601186533", + "Likelihood: 0.10173434728790048", + "Likelihood: 0.2635034134915153", + "Likelihood: 0.19719237454573185", + "Likelihood: 0.07405317639475091", + "Likelihood: 0.18505163652044668", + "Likelihood: 0.013931732605568035", + "Likelihood: 0.01835119002468043", + "Likelihood: 0.08839980484914255", + "Likelihood: 0.10734657172002783", + "Likelihood: 0.2790052782363265", + "Likelihood: 0.2969357280807069", + "Likelihood: 0.05050981174164169", + "Likelihood: 0.16204710497267272", + "Likelihood: 0.018474694234647256", + "Likelihood: 0.20497909263430092", + "Likelihood: 0.15411110550186424", + "Likelihood: 0.2696110261967548", + "Likelihood: 0.12712433270233994", + "Likelihood: 0.17365442283973515", + "Likelihood: 0.25373624545461904", + "Likelihood: 0.12324604493730355", + "Likelihood: 0.09498593157480716", + "Likelihood: 0.08488741131230572", + "Likelihood: 0.09009663236572261", + "Likelihood: 0.20294066174129247", + "Likelihood: 0.07592329505602798", + "Likelihood: 0.06771657102155672", + "Likelihood: 0.16979075413846775", + "Likelihood: 0.13207610348090937", + "Likelihood: 0.24867440690143625", + "Likelihood: 0.05398585111190434", + "Likelihood: 0.09080586437881936", + "Likelihood: 0.06645881061201651", + "Likelihood: 0.13619578097897336", + "Likelihood: 0.2511370779866724", + "Likelihood: 0.026424747789094892", + "Likelihood: 0.3208152821344131", + "Likelihood: 0.21702390797970467", + "Likelihood: 0.19666836929378373", + "Likelihood: 0.08309094063159654", + "Likelihood: 0.11422125564296555", + "Likelihood: 0.07586741210114697", + "Likelihood: 0.21721196046821972", + "Likelihood: 0.1488396076970617", + "Likelihood: 0.2789652214602697", + "Likelihood: 0.08267174765982938", + "Likelihood: 0.3161189828472671", + "Likelihood: 0.061220803789664914", + "Likelihood: 0.25942085119982133", + "Likelihood: 0.27636852389973576", + "Likelihood: 0.02380553415159517", + "Likelihood: 0.23362470851046105", + "Likelihood: 0.30249258803717866", + "Likelihood: 0.10612282967173138", + "Likelihood: 0.059082465186918655", + "Likelihood: 0.10057255215603209", + "Likelihood: 0.11388162268975692", + "Likelihood: 0.01632484900589689", + "Likelihood: 0.18812938181013614", + "Likelihood: 0.1985754290698123", + "Likelihood: 0.07907146290405583", + "Likelihood: 0.1044137021871511", + "Likelihood: 0.30506363136330766", + "Likelihood: 0.16960237897593955", + "Likelihood: 0.15207561157102298", + "Likelihood: 0.1659353312126974", + "Likelihood: 0.1477119732358105", + "Likelihood: 0.20972139892999403", + "Likelihood: 0.18589661190511528", + "Likelihood: 0.0564413293677911", + "Likelihood: 0.2509822202311551", + "Likelihood: 0.07306140947088874", + "Likelihood: 0.16769559130752834", + "Likelihood: 0.30184721511538437", + "Likelihood: 0.14829291280263243", + "Likelihood: 0.13134345567860345", + "Likelihood: 0.20647675797616782", + "Likelihood: 0.24657885093007412", + "Likelihood: 0.0413520204117196", + "Likelihood: 0.0599263589576732", + "Likelihood: 0.19611215103816493", + "Likelihood: 0.047043113067791756", + "Likelihood: 0.24276876719917911", + "Likelihood: 0.13869579808743085", + "Likelihood: 0.009013804858064378", + "Likelihood: 0.039802941234309185", + "Likelihood: 0.08816366699114912", + "Likelihood: 0.04950107913171409", + "Likelihood: 0.052107496433270444", + "Likelihood: 0.2643789825518892", + "Likelihood: 0.09933073431006847", + "Likelihood: 0.0806618142855531", + "Likelihood: 0.24434549609871364", + "Likelihood: 0.16681546005148082", + "Likelihood: 0.01642358749738109", + "Likelihood: 0.18357916618899675", + "Likelihood: 0.3227473367357342", + "Likelihood: 0.06239500659822258", + "Likelihood: 0.05019984641204454", + "Likelihood: 0.20570413829024206", + "Likelihood: 0.30748035797873446", + "Likelihood: 0.04098039313253422", + "Likelihood: 0.15455530743822174", + "Likelihood: 0.02709744754498464", + "Likelihood: 0.005740925557824203", + "Likelihood: 0.22298204299623856", + "Likelihood: 0.06927546698059169", + "Likelihood: 0.23955098903624458", + "Likelihood: 0.029791326426943533", + "Likelihood: 0.2386212594015335", + "Likelihood: 0.005538770585229066", + "Likelihood: 0.19985928456115454", + "Likelihood: 0.058772906612582956", + "Likelihood: 0.2098115501572896", + "Likelihood: 0.23419123276436063", + "Likelihood: 0.23330091266784217", + "Likelihood: 0.10493045080608962", + "Likelihood: 0.09582679945095679", + "Likelihood: 0.02340854647775694", + "Likelihood: 0.21456116862687352", + "Likelihood: 0.29227291221690993", + "Likelihood: 0.2761932379595184", + "Likelihood: 0.14692293213393895", + "Likelihood: 0.12139475239045198", + "Likelihood: 0.16221987523546447", + "Likelihood: 0.26485929219672855", + "Likelihood: 0.19546814511756952", + "Likelihood: 0.22616783507068133", + "Likelihood: 0.06804178863323382", + "Likelihood: 0.18866346444235915", + "Likelihood: 0.025808746341856575", + "Likelihood: 0.04787332371728277", + "Likelihood: 0.14268477262436224", + "Likelihood: 0.11707715750661511", + "Likelihood: 0.10143400354644408", + "Likelihood: 0.266555950410028", + "Likelihood: 0.15343716244749842", + "Likelihood: 0.07813294351648514", + "Likelihood: 0.010430262957327359", + "Likelihood: 0.10411916281119044", + "Likelihood: 0.033469198001118985", + "Likelihood: 0.17302383855957956", + "Likelihood: 0.06998426577705107", + "Likelihood: 0.06522008099667849", + "Likelihood: 0.32224101283632745", + "Likelihood: 0.1294972557942411", + "Likelihood: 0.3119086175051279", + "Likelihood: 0.2747133673164904", + "Likelihood: 0.21238900408996728", + "Likelihood: 0.12176935588382277", + "Likelihood: 0.0738794702526578", + "Likelihood: 0.13951985140881465", + "Likelihood: 0.034637168513945105", + "Likelihood: 0.03146382430932738", + "Likelihood: 0.25356824825251906", + "Likelihood: 0.05945875075791529", + "Likelihood: 0.23423542065262595", + "Likelihood: 0.24655225410358314", + "Likelihood: 0.24027418280838023", + "Likelihood: 0.2096296756666013", + "Likelihood: 0.11413268395916158", + "Likelihood: 0.07243392135083943", + "Likelihood: 0.11227966342062604", + "Likelihood: 0.13431411755533967", + "Likelihood: 0.07290814675693698", + "Likelihood: 0.12070821085201104", + "Likelihood: 0.03504621993744241", + "Likelihood: 0.06064709977873582", + "Likelihood: 0.2356415516196298", + "Likelihood: 0.16562147607173977", + "Likelihood: 0.014829202385980136", + "Likelihood: 0.1779076242812238", + "Likelihood: 0.16424854516071988", + "Likelihood: 0.15763897539653424", + "Likelihood: 0.21814554206486034", + "Likelihood: 0.3194264555736467", + "Likelihood: 0.2788347146780925", + "Likelihood: 0.3223840203663431", + "Likelihood: 0.1942047355372466", + "Likelihood: 0.2813011475419609", + "Likelihood: 0.0936377390581825", + "Likelihood: 0.1330297010709277", + "Likelihood: 0.28473271715085924", + "Likelihood: 0.007399697977409521", + "Likelihood: 0.04065068030683999", + "Likelihood: 0.01799305033632992", + "Likelihood: 0.18373661383470913", + "Likelihood: 0.30829273650970673", + "Likelihood: 0.04905323467340019", + "Likelihood: 0.044505594401712444", + "Likelihood: 0.1546950803842874", + "Likelihood: 0.20031047993353665", + "Likelihood: 0.2598995488764196", + "Likelihood: 0.21245998291494925", + "Likelihood: 0.046535472046024075", + "Likelihood: 0.22943406527409155", + "Likelihood: 0.017926510871029477", + "Likelihood: 0.31644873601003576", + "Likelihood: 0.21584198399633994", + "Likelihood: 0.20745114139022597", + "Likelihood: 0.14760059053384453", + "Likelihood: 0.04002488553680977", + "Likelihood: 0.16414451317883177", + "Likelihood: 0.1423806252435174", + "Likelihood: 0.0994708158897513", + "Likelihood: 0.24659122728414398", + "Likelihood: 0.2705113212395764", + "Likelihood: 0.25621395678167197", + "Likelihood: 0.013403938311359793", + "Likelihood: 0.050433382493201215", + "Likelihood: 0.1710937113885312", + "Likelihood: 0.02634742576419027", + "Likelihood: 0.15297150817000948", + "Likelihood: 0.10897948806969747", + "Likelihood: 0.11066951933211161", + "Likelihood: 0.2201373569276441", + "Likelihood: 0.24502326607368216", + "Likelihood: 0.11764478202141265", + "Likelihood: 0.24743663143485511", + "Likelihood: 0.18171094739568427", + "Likelihood: 0.1844487464871674", + "Likelihood: 0.18867149117770163", + "Likelihood: 0.12517514944401653", + "Likelihood: 0.1625562044275287", + "Likelihood: 0.007682612849725105", + "Likelihood: 0.192776386832435", + "Likelihood: 0.2590062506317009", + "Likelihood: 0.23825354317950073", + "Likelihood: 0.24750283727693118", + "Likelihood: 0.20941584835029925", + "Likelihood: 0.1479603037639854", + "Likelihood: 0.19099024282948482", + "Likelihood: 0.13721409175134022", + "Likelihood: 0.30350171081605437", + "Likelihood: 0.06022923474158729", + "Likelihood: 0.039102350460951084", + "Likelihood: 0.0357738032500437", + "Likelihood: 0.12090406289514277", + "Likelihood: 0.17420038748327993", + "Likelihood: 0.3226281228958755", + "Likelihood: 0.1239712061180854", + "Likelihood: 0.13721432948748996", + "Likelihood: 0.04085683925250503", + "Likelihood: 0.21312821988724015", + "Likelihood: 0.06561126728077868", + "Likelihood: 0.21808702769101948", + "Likelihood: 0.22250771967706032", + "Likelihood: 0.2097690054743992", + "Likelihood: 0.19476342624097553", + "Likelihood: 0.04711882944878688", + "Likelihood: 0.1646108930047375", + "Likelihood: 0.22927854084826246", + "Likelihood: 0.13494942913618393", + "Likelihood: 0.061625525861580335", + "Likelihood: 0.006788640275316281", + "Likelihood: 0.10483364089048237", + "Likelihood: 0.15467341099583704", + "Likelihood: 0.00874550744512288", + "Likelihood: 0.07679977248058471", + "Likelihood: 0.07189355894324455", + "Likelihood: 0.17086516579705832", + "Likelihood: 0.13442479437461244", + "Likelihood: 0.11724638858227829", + "Likelihood: 0.21641629666069487", + "Likelihood: 0.024487380479330238", + "Likelihood: 0.24021856394512178", + "Likelihood: 0.09360277275415596", + "Likelihood: 0.27641452974329805", + "Likelihood: 0.038486749376556294", + "Likelihood: 0.033961827153138245", + "Likelihood: 0.1396566725652269", + "Likelihood: 0.12883591788465862", + "Likelihood: 0.004303176460485466", + "Likelihood: 0.10028045782422723", + "Likelihood: 0.2204697596972189", + "Likelihood: 0.09296592469485086", + "Likelihood: 0.15651824007236795", + "Likelihood: 0.20775664318727877", + "Likelihood: 0.02322288327729164", + "Likelihood: 0.2595895126967374", + "Likelihood: 0.30886352315630755", + "Likelihood: 0.29874284385796446", + "Likelihood: 0.13577041798761716", + "Likelihood: 0.19124294067858044", + "Likelihood: 0.007128119986339611", + "Likelihood: 0.03936636443101732", + "Likelihood: 0.1625720039881789", + "Likelihood: 0.28886440117259427", + "Likelihood: 0.21704132840163562", + "Likelihood: 0.10609490706772964", + "Likelihood: 0.31361344764709803", + "Likelihood: 0.14190697034971858", + "Likelihood: 0.06547734491113769", + "Likelihood: 0.09282261603255873", + "Likelihood: 0.17579120757590483", + "Likelihood: 0.11291998279409388", + "Likelihood: 0.21747462058794423", + "Likelihood: 0.04631350065778329", + "Likelihood: 0.25419858595238337", + "Likelihood: 0.301022563972158", + "Likelihood: 0.2851763957989837", + "Likelihood: 0.23780507233542392", + "Likelihood: 0.242589469528289", + "Likelihood: 0.2469404771781565", + "Likelihood: 0.19642638670027082", + "Likelihood: 0.03669077712500581", + "Likelihood: 0.12739133516109805", + "Likelihood: 0.09817876588318923", + "Likelihood: 0.14206918715548006", + "Likelihood: 0.039020105663792236", + "Likelihood: 0.26373563016073964", + "Likelihood: 0.26097410063098353", + "Likelihood: 0.27574943246393435", + "Likelihood: 0.0602524759806687", + "Likelihood: 0.030773796303025003", + "Likelihood: 0.26332163351910326", + "Likelihood: 0.2257778508182674", + "Likelihood: 0.15871592994893136", + "Likelihood: 0.06785739889197057", + "Likelihood: 0.2610128993843403", + "Likelihood: 0.24706749721058993", + "Likelihood: 0.21798758524355377", + "Likelihood: 0.057455368620562546", + "Likelihood: 0.2665564613141104", + "Likelihood: 0.1190378812086775", + "Likelihood: 0.24063830107142675", + "Likelihood: 0.06276019803130213", + "Likelihood: 0.18522166633294754", + "Likelihood: 0.270674370288608", + "Likelihood: 0.20310919437270472", + "Likelihood: 0.264845310801677", + "Likelihood: 0.2732987993580522", + "Likelihood: 0.24446635685387005", + "Likelihood: 0.2708639158709", + "Likelihood: 0.2613603839751038", + "Likelihood: 0.07223546810489427", + "Likelihood: 0.03574309587773457", + "Likelihood: 0.23258029587570317", + "Likelihood: 0.0499934464710171", + "Likelihood: 0.21910919371854637", + "Likelihood: 0.19177225982702503", + "Likelihood: 0.10410076654463657", + "Likelihood: 0.10433286624548195", + "Likelihood: 0.2236397146264101", + "Likelihood: 0.25644198996398443", + "Likelihood: 0.3169615859558352", + "Likelihood: 0.15352806718857334", + "Likelihood: 0.1943798139194885", + "Likelihood: 0.14678493626491382", + "Likelihood: 0.14004807022066654", + "Likelihood: 0.18142647686042443", + "Likelihood: 0.0888047012262782", + "Likelihood: 0.03081752274511015", + "Likelihood: 0.022566746129895756", + "Likelihood: 0.19116301700757637", + "Likelihood: 0.07995924803851849", + "Likelihood: 0.07167569420287007", + "Likelihood: 0.22564605864207068", + "Likelihood: 0.016200715029413275", + "Likelihood: 0.12038410516774016", + "Likelihood: 0.10386226134448823", + "Likelihood: 0.012400498781198158", + "Likelihood: 0.24374985484619838", + "Likelihood: 0.02805673444786284", + "Likelihood: 0.2514157688900636", + "Likelihood: 0.17315454573739594", + "Likelihood: 0.1626516453347625", + "Likelihood: 0.12059877034551499", + "Likelihood: 0.10689864311192933", + "Likelihood: 0.07557082476419204", + "Likelihood: 0.20189471013153837", + "Likelihood: 0.29847486155031516", + "Likelihood: 0.2844455423756465", + "Likelihood: 0.25752953762890696", + "Likelihood: 0.18448234751264442", + "Likelihood: 0.2722404003664796", + "Likelihood: 0.2813621311487776", + "Likelihood: 0.03891041167710826", + "Likelihood: 0.19384853454427337", + "Likelihood: 0.1525011421723293", + "Likelihood: 0.19278571205044637", + "Likelihood: 0.30006104321841837", + "Likelihood: 0.10228918037882152", + "Likelihood: 0.1547610423829063", + "Likelihood: 0.013235687747120448", + "Likelihood: 0.10690371117455383", + "Likelihood: 0.27321474703871096", + "Likelihood: 0.14251901771624714", + "Likelihood: 0.21725127567917968", + "Likelihood: 0.20354076305990396", + "Likelihood: 0.1049884792200897", + "Likelihood: 0.04343792729895125", + "Likelihood: 0.12449257774708287", + "Likelihood: 0.13173674288184098", + "Likelihood: 0.24841291030443854", + "Likelihood: 0.1535009500715905", + "Likelihood: 0.09956027414500077", + "Likelihood: 0.05558894153690475", + "Likelihood: 0.1516504249982617", + "Likelihood: 0.21916873900780498", + "Likelihood: 0.28901718122286196", + "Likelihood: 0.045881466552238875", + "Likelihood: 0.04207447183610984", + "Likelihood: 0.055813598526348034", + "Likelihood: 0.14599321110782784", + "Likelihood: 0.2837420655174675", + "Likelihood: 0.15709054826494454", + "Likelihood: 0.16087119794857965", + "Likelihood: 0.003500471213984427", + "Likelihood: 0.11367962469290645", + "Likelihood: 0.11667021797991885", + "Likelihood: 0.1199370610197878", + "Likelihood: 0.16423610951758472", + "Likelihood: 0.21705313065196155", + "Likelihood: 0.09964761055064655", + "Likelihood: 0.04891521064009924", + "Likelihood: 0.19906909616187582", + "Likelihood: 0.31038794987343543", + "Likelihood: 0.31868998619205025", + "Likelihood: 0.2891388870228015", + "Likelihood: 0.010888520097307109", + "Likelihood: 0.2134927222426513", + "Likelihood: 0.25193008196041417", + "Likelihood: 0.10046995747590913", + "Likelihood: 0.22186354043810547", + "Likelihood: 0.07881884943464233", + "Likelihood: 0.214868061385039", + "Likelihood: 0.1678928380685143", + "Likelihood: 0.18940601150670303", + "Likelihood: 0.1621539789544772", + "Likelihood: 0.24992980769319012", + "Likelihood: 0.18289470215339268", + "Likelihood: 0.029762084932850066", + "Likelihood: 0.18445234704007982", + "Likelihood: 0.07921195969975615", + "Likelihood: 0.2941384428351301", + "Likelihood: 0.03263889864495672", + "Likelihood: 0.0094044285128181", + "Likelihood: 0.136681702177945", + "Likelihood: 0.25083639241928307", + "Likelihood: 0.22810808939240632", + "Likelihood: 0.0723453868744947", + "Likelihood: 0.015733873372316604", + "Likelihood: 0.22974991005778467", + "Likelihood: 0.1374951223857434", + "Likelihood: 0.23461857633094974", + "Likelihood: 0.232955286328861", + "Likelihood: 0.020920779797960816", + "Likelihood: 0.20978331871716324", + "Likelihood: 0.21716345696486838", + "Likelihood: 0.04460333568448142", + "Likelihood: 0.060890063156408346", + "Likelihood: 0.16163810400333625", + "Likelihood: 0.16774080732416502", + "Likelihood: 0.027133399108977416", + "Likelihood: 0.11048942040329379", + "Likelihood: 0.13104993959938882", + "Likelihood: 0.02918245967237712", + "Likelihood: 0.2206409369525186", + "Likelihood: 0.2762063013007982", + "Likelihood: 0.20491958022334855", + "Likelihood: 0.058922145616613", + "Likelihood: 0.11728473149969186", + "Likelihood: 0.05381585970575245", + "Likelihood: 0.3071022760251058", + "Likelihood: 0.2021716572180271", + "Likelihood: 0.13034444269247172", + "Likelihood: 0.09898527145523055", + "Likelihood: 0.10817817265727411", + "Likelihood: 0.30715795705738647", + "Likelihood: 0.3188502998692093", + "Likelihood: 0.11409916677613287", + "Likelihood: 0.30730479701247126", + "Likelihood: 0.22850740923135668", + "Likelihood: 0.28120641379225314", + "Likelihood: 0.09301346391655999", + "Likelihood: 0.05577441071045505", + "Likelihood: 0.2560167568800074", + "Likelihood: 0.06747784052337162", + "Likelihood: 0.19159071037405914", + "Likelihood: 0.23041226298066864", + "Likelihood: 0.03241747021675781", + "Likelihood: 0.13619096156742086", + "Likelihood: 0.13857358881188003", + "Likelihood: 0.23201863876149523", + "Likelihood: 0.32048129907542566", + "Likelihood: 0.2299213890199135", + "Likelihood: 0.02455510639554216", + "Likelihood: 0.19343597327672649", + "Likelihood: 0.09533053460457337", + "Likelihood: 0.18154155462167895", + "Likelihood: 0.2774030580156461", + "Likelihood: 0.067806112803177", + "Likelihood: 0.05555696224563808", + "Likelihood: 0.06117661471723505", + "Likelihood: 0.21340323893380844", + "Likelihood: 0.14398820597022335", + "Likelihood: 0.05194027905589254", + "Likelihood: 0.0466330482424279", + "Likelihood: 0.04233087599882853", + "Likelihood: 0.01094260408730457", + "Likelihood: 0.10921579047118714", + "Likelihood: 0.12446191533822092", + "Likelihood: 0.27187737623313063", + "Likelihood: 0.25387011221614786", + "Likelihood: 0.020295649943600294", + "Likelihood: 0.305130018163218", + "Likelihood: 0.045706580251537385", + "Likelihood: 0.16490478469414693", + "Likelihood: 0.02911124976778092", + "Likelihood: 0.21667288448822586", + "Likelihood: 0.04777104449858289", + "Likelihood: 0.19895770812652705", + "Likelihood: 0.02005613100594492", + "Likelihood: 0.04031883375957403", + "Likelihood: 0.03855961722143748", + "Likelihood: 0.11396655861186927", + "Likelihood: 0.22804344987845437", + "Likelihood: 0.10676801147844703", + "Likelihood: 0.16563004402098344", + "Likelihood: 0.29345214692076177", + "Likelihood: 0.012374242423077665", + "Likelihood: 0.1816311743711642", + "Likelihood: 0.2413003565789571", + "Likelihood: 0.29708481835496536", + "Likelihood: 0.1926472121027401", + "Likelihood: 0.22496636719799867", + "Likelihood: 0.1092225571351704", + "Likelihood: 0.19377036164472028", + "Likelihood: 0.2874209227418949", + "Likelihood: 0.31943373991245544", + "Likelihood: 0.25641684462618036", + "Likelihood: 0.15234537391764127", + "Likelihood: 0.14770462449241253", + "Likelihood: 0.023681102020294876", + "Likelihood: 0.19967467212984372", + "Likelihood: 0.025352632380086924", + "Likelihood: 0.26092999596392513", + "Likelihood: 0.08905210107618676", + "Likelihood: 0.16980296657120753", + "Likelihood: 0.020653334852424005", + "Likelihood: 0.11914405773313883", + "Likelihood: 0.05761210830681725", + "Likelihood: 0.24658080447275313", + "Likelihood: 0.21562173775215018", + "Likelihood: 0.29176471980730573", + "Likelihood: 0.11625504288795241", + "Likelihood: 0.30094411973757546", + "Likelihood: 0.05095660732555856", + "Likelihood: 0.32051566310572066", + "Likelihood: 0.049817092430502204", + "Likelihood: 0.28298252941549473", + "Likelihood: 0.049109008978362234", + "Likelihood: 0.26382943134125736", + "Likelihood: 0.12721876154142697", + "Likelihood: 0.001961381641537423", + "Likelihood: 0.3028034664239406", + "Likelihood: 0.1881227178960861", + "Likelihood: 0.006712940440500905", + "Likelihood: 0.20836223021120026", + "Likelihood: 0.05810500165526543", + "Likelihood: 0.1975455813971333", + "Likelihood: 0.16581380524929235", + "Likelihood: 0.20462084372054617", + "Likelihood: 0.10143326466638633", + "Likelihood: 0.14057258951969276", + "Likelihood: 0.18553940701170332", + "Likelihood: 0.046320248544513734", + "Likelihood: 0.12290258744726792", + "Likelihood: 0.011651595596190079", + "Likelihood: 0.29184640582894683", + "Likelihood: 0.10561139974735943", + "Likelihood: 0.2769663070650989", + "Likelihood: 0.044008450752481255", + "Likelihood: 0.25419792446734046", + "Likelihood: 0.02241865167266878", + "Likelihood: 0.31686893564647334", + "Likelihood: 0.26119737005413", + "Likelihood: 0.19698302213038704", + "Likelihood: 0.05946524387131893", + "Likelihood: 0.0014017103356671044", + "Likelihood: 0.19224359730524276", + "Likelihood: 0.037482495011483576", + "Likelihood: 0.19527877844499647", + "Likelihood: 0.016476019164156436", + "Likelihood: 0.05235900727477211", + "Likelihood: 0.31381421637448215", + "Likelihood: 0.0376426818599033", + "Likelihood: 0.08770498462531186", + "Likelihood: 0.1722188428206219", + "Likelihood: 0.0851826453276371", + "Likelihood: 0.026539022351707565", + "Likelihood: 0.22734560563361497", + "Likelihood: 0.07299770522359245", + "Likelihood: 0.10968539864946883", + "Likelihood: 0.09249903161923292", + "Likelihood: 0.11603435539833193", + "Likelihood: 0.13256990766760657", + "Likelihood: 0.03454732100482982", + "Likelihood: 0.16372188453226788", + "Likelihood: 0.20293249634182434", + "Likelihood: 0.04835546778914684", + "Likelihood: 0.187811698880726", + "Likelihood: 0.05928892616342396", + "Likelihood: 0.031054114876620333", + "Likelihood: 0.2613089340105763", + "Likelihood: 0.02342288757989806", + "Likelihood: 0.16204610859828036", + "Likelihood: 0.23577685468455697", + "Likelihood: 0.1595278754090812", + "Likelihood: 0.059377247402905384", + "Likelihood: 0.25212083334613344", + "Likelihood: 0.28343274687047154", + "Likelihood: 0.2534033098796594", + "Likelihood: 0.20621455585298507", + "Likelihood: 0.18702451920989077", + "Likelihood: 0.1262816617658752", + "Likelihood: 0.22835257553724328", + "Likelihood: 0.08610531653739571", + "Likelihood: 0.03433614529101398", + "Likelihood: 0.30024058906101997", + "Likelihood: 0.04116026636701693", + "Likelihood: 0.19940304531066388", + "Likelihood: 0.2574077118959507", + "Likelihood: 0.17125729397107825", + "Likelihood: 0.1015226589997761", + "Likelihood: 0.258366693416869", + "Likelihood: 0.12763761934549508", + "Likelihood: 0.22227405312358678", + "Likelihood: 0.1074235806610516", + "Likelihood: 0.018613159301553623", + "Likelihood: 0.24910419105776774", + "Likelihood: 0.10341496938386956", + "Likelihood: 0.049145398156519554", + "Likelihood: 0.20964341103415937", + "Likelihood: 0.03175974544639368", + "Likelihood: 0.0506081600846966", + "Likelihood: 0.1529032491681603", + "Likelihood: 0.2660992670849838", + "Likelihood: 0.07944763897233259", + "Likelihood: 0.10009100339640747", + "Likelihood: 0.10082182991861438", + "Likelihood: 0.1963549247171767", + "Likelihood: 0.3175816362740764", + "Likelihood: 0.2887420514992646", + "Likelihood: 0.26822280604713966", + "Likelihood: 0.16106509391200832", + "Likelihood: 0.03399779495976913", + "Likelihood: 0.02447236168890762", + "Likelihood: 0.012988969056481264", + "Likelihood: 0.2096958660456746", + "Likelihood: 0.06646465083764967", + "Likelihood: 0.18664528221024204", + "Likelihood: 0.06870754578388234", + "Likelihood: 0.14611675888680328", + "Likelihood: 0.10032473609499398", + "Likelihood: 0.06081032256987722", + "Likelihood: 0.15580108251496852", + "Likelihood: 0.17730870971713067", + "Likelihood: 0.24809300170885296", + "Likelihood: 0.13289397938092257", + "Likelihood: 0.19236179425103914", + "Likelihood: 0.07385482980019588", + "Likelihood: 0.27541720322876384", + "Likelihood: 0.2703772685485274", + "Likelihood: 0.1292644186600001", + "Likelihood: 0.30365478706712334", + "Likelihood: 0.030083790308197137", + "Likelihood: 0.1387348621350419", + "Likelihood: 0.11758038858890604", + "Likelihood: 0.17549489158454146", + "Likelihood: 0.09025009560510656", + "Likelihood: 0.24422164210522723", + "Likelihood: 0.08788960588455048", + "Likelihood: 0.22235583574209605", + "Likelihood: 0.08079631957108421", + "Likelihood: 0.26532998659675683", + "Likelihood: 0.18095670538713698", + "Likelihood: 0.05120038649567998", + "Likelihood: 0.1227664056745012", + "Likelihood: 0.09470235497460627", + "Likelihood: 0.09660690257405694", + "Likelihood: 0.01724293337432965", + "Likelihood: 0.31117732252806835", + "Likelihood: 0.013224241641845725", + "Likelihood: 0.13505054395086108", + "Likelihood: 0.17685727739036247", + "Likelihood: 0.08347508000708158", + "Likelihood: 0.17152682970764702", + "Likelihood: 0.030037448847751235", + "Likelihood: 0.08053251919286153", + "Likelihood: 0.023137093608918562", + "Likelihood: 0.27759459240991896", + "Likelihood: 0.04288994128588033", + "Likelihood: 0.18489096572780986", + "Likelihood: 0.22910730060102755", + "Likelihood: 0.1647247456909151", + "Likelihood: 0.021284756979470503", + "Likelihood: 0.2295222129850152", + "Likelihood: 0.23829701908780948", + "Likelihood: 0.3030547969761725", + "Likelihood: 0.009439115631423156", + "Likelihood: 0.2274823589290137", + "Likelihood: 0.18994172340160553", + "Likelihood: 0.11646952912072435", + "Likelihood: 0.0016273244574570398", + "Likelihood: 0.10590577764450738", + "Likelihood: 0.1419420989695256", + "Likelihood: 0.13337670324395287", + "Likelihood: 0.09907045549949242", + "Likelihood: 0.22043767955527607", + "Likelihood: 0.24281641213114852", + "Likelihood: 0.06542950198733319", + "Likelihood: 0.29365575173883657", + "Likelihood: 0.16420431999186788", + "Likelihood: 0.3104967077490559", + "Likelihood: 0.2606637605486834", + "Likelihood: 0.1146454975843521", + "Likelihood: 0.18936566086085585", + "Likelihood: 0.1564127686753322", + "Likelihood: 0.11529362933664396", + "Likelihood: 0.03374943899826442", + "Likelihood: 0.18862027890477795", + "Likelihood: 0.2356287280926576", + "Likelihood: 0.16019012183818318", + "Likelihood: 0.3144589224100923", + "Likelihood: 0.10963091070149032", + "Likelihood: 0.0958672422757053", + "Likelihood: 0.023935922654621127", + "Likelihood: 0.009438511175041306", + "Likelihood: 0.29269952177024344", + "Likelihood: 0.05219424739137062", + "Likelihood: 0.2709885081763418", + "Likelihood: 0.2627569849242476", + "Likelihood: 0.029946172544679232", + "Likelihood: 0.01850069066640692", + "Likelihood: 0.16867470968056675", + "Likelihood: 0.026837420123532657", + "Likelihood: 0.013573757045152787", + "Likelihood: 0.2738803964925796", + "Likelihood: 0.042712469594539955", + "Likelihood: 0.06822417255570151", + "Likelihood: 0.2999254832548879", + "Likelihood: 0.14949386157875524", + "Likelihood: 0.2690557966736404", + "Likelihood: 0.3110991102810256", + "Likelihood: 0.19017884811027339", + "Likelihood: 0.03404201830706232", + "Likelihood: 0.09839568942714828", + "Likelihood: 0.19699083183743515", + "Likelihood: 0.2052122862820023", + "Likelihood: 0.15986104095799272", + "Likelihood: 0.06098080187242092", + "Likelihood: 0.015509478872013715", + "Likelihood: 0.049198787652128234", + "Likelihood: 0.23729681221774923", + "Likelihood: 0.024860993012034212", + "Likelihood: 0.10599566564979769", + "Likelihood: 0.00840832028347558", + "Likelihood: 0.22399879775868264", + "Likelihood: 0.037142784768037944", + "Likelihood: 0.14545901525798552", + "Likelihood: 0.10439589246711727", + "Likelihood: 0.21630109526929434", + "Likelihood: 0.007863828047541797", + "Likelihood: 0.12978582628406748", + "Likelihood: 0.08674154349549813", + "Likelihood: 0.11261053049773276", + "Likelihood: 0.04147314360082913", + "Likelihood: 0.08207855239680495", + "Likelihood: 0.31360438574183497", + "Likelihood: 0.06317795720350455", + "Likelihood: 0.2527442886254074", + "Likelihood: 0.05643439043383069", + "Likelihood: 0.060988445446009266", + "Likelihood: 0.005868421683726778", + "Likelihood: 0.1038541002784468", + "Likelihood: 0.2946054852446167", + "Likelihood: 0.1483855808833999", + "Likelihood: 0.2026157474587129", + "Likelihood: 0.042955078494541415", + "Likelihood: 0.2466012265019828", + "Likelihood: 0.03513674849877089", + "Likelihood: 0.08136288167939931", + "Likelihood: 0.15286555269097007", + "Likelihood: 0.17586879971280653", + "Likelihood: 0.31382466544724724", + "Likelihood: 0.1904538243384553", + "Likelihood: 0.10961671082055194", + "Likelihood: 0.07215177987610916", + "Likelihood: 0.1354025763957001", + "Likelihood: 0.020001048047249184", + "Likelihood: 0.02165444864619052", + "Likelihood: 0.15791018027696674", + "Likelihood: 0.09654113544583173", + "Likelihood: 0.08485653145854162", + "Likelihood: 0.2468296697911449", + "Likelihood: 0.21395168868212447", + "Likelihood: 0.18961946809388508", + "Likelihood: 0.064718242977769", + "Likelihood: 0.16464884026011356", + "Likelihood: 0.045192389968121784", + "Likelihood: 0.26146932823560987", + "Likelihood: 0.1898314783379402", + "Likelihood: 0.004631321823511424", + "Likelihood: 0.007571435193369461", + "Likelihood: 0.024749739511708408", + "Likelihood: 0.29088718162128374", + "Likelihood: 0.20964230961924596", + "Likelihood: 0.22154684121406584", + "Likelihood: 0.10908909734587804", + "Likelihood: 0.1459208787400911", + "Likelihood: 0.06794264068018724", + "Likelihood: 0.3025269815489891", + "Likelihood: 0.06763598573727639", + "Likelihood: 0.18801587185319968", + "Likelihood: 0.24499876056576603", + "Likelihood: 0.30062694088487857", + "Likelihood: 0.11893056685165566", + "Likelihood: 0.2830993339986224", + "Likelihood: 0.2812711704994448", + "Likelihood: 0.009456913137408566", + "Likelihood: 0.06147082562534903", + "Likelihood: 0.20614882269864013", + "Likelihood: 0.09260811898629619", + "Likelihood: 0.02451743298833641", + "Likelihood: 0.27802646138662573", + "Likelihood: 0.26726418639799804", + "Likelihood: 0.20839215287553406", + "Likelihood: 0.14674338310898533", + "Likelihood: 0.2053079335393592", + "Likelihood: 0.14414940827104955", + "Likelihood: 0.16656459767672535", + "Likelihood: 0.132220412796274", + "Likelihood: 0.0808188082469353", + "Likelihood: 0.09558969653353533", + "Likelihood: 0.09530868313564352", + "Likelihood: 0.116865426871101", + "Likelihood: 0.04634595224104042", + "Likelihood: 0.06645731323221708", + "Likelihood: 0.2959620797031816", + "Likelihood: 0.1360992773748621", + "Likelihood: 0.02622216565472807", + "Likelihood: 0.2347470789222352", + "Likelihood: 0.04233059067427222", + "Likelihood: 0.255753675940993", + "Likelihood: 0.050426853880716785", + "Likelihood: 0.1511907394680479", + "Likelihood: 0.31177062137367617", + "Likelihood: 0.2509419042770058", + "Likelihood: 0.08918390677531897", + "Likelihood: 0.15535718299691345", + "Likelihood: 0.1519419540414298", + "Likelihood: 0.08281223826690655", + "Likelihood: 0.17656767684978705", + "Likelihood: 0.15994972322420517", + "Likelihood: 0.03165858457747675", + "Likelihood: 0.07158449942070752", + "Likelihood: 0.02881484981754625", + "Likelihood: 0.23863419460896954", + "Likelihood: 0.19657028802806922", + "Likelihood: 0.04899427994076908", + "Likelihood: 0.0930974470622995", + "Likelihood: 0.16260766301190122", + "Likelihood: 0.20627481875805445", + "Likelihood: 0.17581575286761153", + "Likelihood: 0.11451523880504075", + "Likelihood: 0.007705306067080138", + "Likelihood: 0.2471761037139694", + "Likelihood: 0.025781843300135544", + "Likelihood: 0.08064574234015189", + "Likelihood: 0.3022733876341074", + "Likelihood: 0.1303787476486188", + "Likelihood: 0.29978606044932454", + "Likelihood: 0.12387291643169893", + "Likelihood: 0.04128984199638534", + "Likelihood: 0.16843925351341107", + "Likelihood: 0.2869343036837952", + "Likelihood: 0.07918543876306226", + "Likelihood: 0.06668340680274122", + "Likelihood: 0.19396828069581631", + "Likelihood: 0.1042349951242317", + "Likelihood: 0.03082832927038769", + "Likelihood: 0.026135776802276474", + "Likelihood: 0.2024045421936392", + "Likelihood: 0.29096772697872", + "Likelihood: 0.1287237123353115", + "Likelihood: 0.24969981881624223", + "Likelihood: 0.3165510556058472", + "Likelihood: 0.077853790022555", + "Likelihood: 0.2722018980682566", + "Likelihood: 0.3145544495668701", + "Likelihood: 0.07689123214054937", + "Likelihood: 0.1706499482982905", + "Likelihood: 0.04625026162470714", + "Likelihood: 0.2358751408464517", + "Likelihood: 0.1280602761010164", + "Likelihood: 0.03996301255990084", + "Likelihood: 0.21384707009498788", + "Likelihood: 0.235054573598938", + "Likelihood: 0.06404685697767247", + "Likelihood: 0.2763088548534766", + "Likelihood: 0.025970223801430048", + "Likelihood: 0.01212542844782918", + "Likelihood: 0.1588994655778274", + "Likelihood: 0.10060252849410721", + "Likelihood: 0.08402628026586491", + "Likelihood: 0.012944646724654455", + "Likelihood: 0.17942564338826078", + "Likelihood: 0.07364560685060126", + "Likelihood: 0.08707913259162613", + "Likelihood: 0.08585741986418095", + "Likelihood: 0.07759075259930467", + "Likelihood: 0.005036712241434339", + "Likelihood: 0.18306497537058758", + "Likelihood: 0.189295469949836", + "Likelihood: 0.19781755499822704", + "Likelihood: 0.29151298729904424", + "Likelihood: 0.059894861027526565", + "Likelihood: 0.06580535013937959", + "Likelihood: 0.14738917498663484", + "Likelihood: 0.19629403494003234", + "Likelihood: 0.1636712335260618", + "Likelihood: 0.14010648351527538", + "Likelihood: 0.018077615767830308", + "Likelihood: 0.09413355846678187", + "Likelihood: 0.279298529272339", + "Likelihood: 0.1399029892773882", + "Likelihood: 0.09627273751769287", + "Likelihood: 0.07277937541350521", + "Likelihood: 0.15848717303390153", + "Likelihood: 0.14823571072742048", + "Likelihood: 0.1317107084418439", + "Likelihood: 0.24605086932221806", + "Likelihood: 0.15652661552241962", + "Likelihood: 0.18250497398867757", + "Likelihood: 0.012166115832097837", + "Likelihood: 0.13298830644097556", + "Likelihood: 0.26694407492896693", + "Likelihood: 0.18688108940843903", + "Likelihood: 0.3110396801101089", + "Likelihood: 0.00808135658604539", + "Likelihood: 0.2542411959384788", + "Likelihood: 0.14054213427314832", + "Likelihood: 0.019647838007868346", + "Likelihood: 0.20527556903017652", + "Likelihood: 0.12338501670441948", + "Likelihood: 0.10852218001499572", + "Likelihood: 0.30188661944030265", + "Likelihood: 0.14800337585266013", + "Likelihood: 0.19344490136894954", + "Likelihood: 0.20304155788345016", + "Likelihood: 0.19478933371617776", + "Likelihood: 0.2689788789452439", + "Likelihood: 0.09862755003914045", + "Likelihood: 0.01883419499896165", + "Likelihood: 0.07949659324533781", + "Likelihood: 0.17723147256408497", + "Likelihood: 0.1259304916106471", + "Likelihood: 0.14502596311396296", + "Likelihood: 0.15334807858092725", + "Likelihood: 0.15420284287700228", + "Likelihood: 0.2608850767418884", + "Likelihood: 0.14963657983574769", + "Likelihood: 0.3078361098047339", + "Likelihood: 0.048169749118183246", + "Likelihood: 0.2428580692664161", + "Likelihood: 0.09793728022179812", + "Likelihood: 0.030031640089999333", + "Likelihood: 0.15397068590210888", + "Likelihood: 0.2932810154610519", + "Likelihood: 0.3053757344454008", + "Likelihood: 0.19511179685641122", + "Likelihood: 0.2693966180482973", + "Likelihood: 0.07148394256994214", + "Likelihood: 0.12557233893660605", + "Likelihood: 0.010133702267173196", + "Likelihood: 0.18421307956939276", + "Likelihood: 0.15176832357947054", + "Likelihood: 0.04952502784442002", + "Likelihood: 0.2642274712549161", + "Likelihood: 0.15095580059757394", + "Likelihood: 0.2850362831120361", + "Likelihood: 0.09529163171563912", + "Likelihood: 0.2272961167217938", + "Likelihood: 0.2868432066653512", + "Likelihood: 0.18599935518014366", + "Likelihood: 0.19999203124646728", + "Likelihood: 0.12547876840479552", + "Likelihood: 0.2945041497141064", + "Likelihood: 0.19553464611941232", + "Likelihood: 0.234345212724757", + "Likelihood: 0.023646286193486132", + "Likelihood: 0.2059493634786188", + "Likelihood: 0.2722127782088083", + "Likelihood: 0.042981780699244", + "Likelihood: 0.20947025202288316", + "Likelihood: 0.07417294874098632", + "Likelihood: 0.2161197338237977", + "Likelihood: 0.1170514002335398", + "Likelihood: 0.2667728142293874", + "Likelihood: 0.04950999679480169", + "Likelihood: 0.2930313290889802", + "Likelihood: 0.05151972685488714", + "Likelihood: 0.3124207085446234", + "Likelihood: 0.21240015863285122", + "Likelihood: 0.20504079780874757", + "Likelihood: 0.09148293945359084", + "Likelihood: 0.10223709773159625", + "Likelihood: 0.12053476995236855", + "Likelihood: 0.28421348778222566", + "Likelihood: 0.07713928799227812", + "Likelihood: 0.0348072401238958", + "Likelihood: 0.1280589299460543", + "Likelihood: 0.1682609762326081", + "Likelihood: 0.17820152727254132", + "Likelihood: 0.03799719141795042", + "Likelihood: 0.12534516605711532", + "Likelihood: 0.22496953242081966", + "Likelihood: 0.16017011151504518", + "Likelihood: 0.28421837750296075", + "Likelihood: 0.13507360338444813", + "Likelihood: 0.10994821823644468", + "Likelihood: 0.06553558647070262", + "Likelihood: 0.14182093954679645", + "Likelihood: 0.20836089645051709", + "Likelihood: 0.10604114528667923", + "Likelihood: 0.22161394428161385", + "Likelihood: 0.17480153013345182", + "Likelihood: 0.1253983690254647", + "Likelihood: 0.26052468416537666", + "Likelihood: 0.16695573049502385", + "Likelihood: 0.11005518945043098", + "Likelihood: 0.20022553245421235", + "Likelihood: 0.1776228564726482", + "Likelihood: 0.24244943387303422", + "Likelihood: 0.005839437180482993", + "Likelihood: 0.19607228595098583", + "Likelihood: 0.20954365652299742", + "Likelihood: 0.23433783427626922", + "Likelihood: 0.11932738451498905", + "Likelihood: 0.07750482269056395", + "Likelihood: 0.2272412718545153", + "Likelihood: 0.110690914240807", + "Likelihood: 0.10108366930760887", + "Likelihood: 0.06691941006800707", + "Likelihood: 0.09164151041380675", + "Likelihood: 0.28663259488487175", + "Likelihood: 0.15240650150816068", + "Likelihood: 0.06373764775546707", + "Likelihood: 0.10365286951117661", + "Likelihood: 0.04831565311809911", + "Likelihood: 0.1127514891437931", + "Likelihood: 0.008822440098091407", + "Likelihood: 0.17711697669968562", + "Likelihood: 0.2066404889175201", + "Likelihood: 0.16313016851197817", + "Likelihood: 0.0856558050120054", + "Likelihood: 0.1649684935210718", + "Likelihood: 0.2901316439580305", + "Likelihood: 0.2662933818610331", + "Likelihood: 0.03477248767914121", + "Likelihood: 0.025600578790981213", + "Likelihood: 0.16618045457248262", + "Likelihood: 0.05533768531850621", + "Likelihood: 0.15747562514536043", + "Likelihood: 0.11989703056515395", + "Likelihood: 0.2911738573609724", + "Likelihood: 0.19152852099013953", + "Likelihood: 0.20310561292155868", + "Likelihood: 0.10800411236074998", + "Likelihood: 0.2618863541224218", + "Likelihood: 0.05732027157709178", + "Likelihood: 0.17323811705407557", + "Likelihood: 0.09850975589499425", + "Likelihood: 0.24030866807110102", + "Likelihood: 0.17606683839537854", + "Likelihood: 0.07394735462596419", + "Likelihood: 0.3146588465363175", + "Likelihood: 0.02175159149687742", + "Likelihood: 0.10509349618632903", + "Likelihood: 0.2633564373385628", + "Likelihood: 0.31184608306091255", + "Likelihood: 0.11794720624869352", + "Likelihood: 0.18756726212184918", + "Likelihood: 0.10855969920507444", + "Likelihood: 0.2198558178312724", + "Likelihood: 0.06185201504724856", + "Likelihood: 0.037280248269146166", + "Likelihood: 0.0231444300994037", + "Likelihood: 0.12010475993847877", + "Likelihood: 0.20080231924139955", + "Likelihood: 0.2763814734092602", + "Likelihood: 0.1783169347971437", + "Likelihood: 0.014259622021787714", + "Likelihood: 0.09429395194354459", + "Likelihood: 0.02657200237869314", + "Likelihood: 0.30158049870962345", + "Likelihood: 0.20078437999135593", + "Likelihood: 0.11459486224375612", + "Likelihood: 0.14878391797544083", + "Likelihood: 0.06641235336425297", + "Likelihood: 0.1576596804613952", + "Likelihood: 0.22607969815757686", + "Likelihood: 0.1042170678207666", + "Likelihood: 0.27950660442316383", + "Likelihood: 0.2538316760499933", + "Likelihood: 0.13155365962510285", + "Likelihood: 0.29934038624637777", + "Likelihood: 0.029437188857142655", + "Likelihood: 0.10336324685141131", + "Likelihood: 0.02338965779869065", + "Likelihood: 0.12018940628111775", + "Likelihood: 0.2651221393973472", + "Likelihood: 0.030574695478787068", + "Likelihood: 0.14800233117696932", + "Likelihood: 0.022529217460263186", + "Likelihood: 0.20631007302919732", + "Likelihood: 0.11203003793321303", + "Likelihood: 0.2009236247399982", + "Likelihood: 0.023770594823861554", + "Likelihood: 0.24403144534678045", + "Likelihood: 0.15029179798755515", + "Likelihood: 0.16432122139243577", + "Likelihood: 0.10624768136218066", + "Likelihood: 0.020576741041496094", + "Likelihood: 0.17069588737081257", + "Likelihood: 0.03564301194505822", + "Likelihood: 0.010460709053018068", + "Likelihood: 0.05582172750859659", + "Likelihood: 0.018158096025382812", + "Likelihood: 0.20633967021891", + "Likelihood: 0.15842023192675023", + "Likelihood: 0.14352724082559873", + "Likelihood: 0.17101975452858464", + "Likelihood: 0.24894297556482767", + "Likelihood: 0.2834544888708678", + "Likelihood: 0.29321860667781935", + "Likelihood: 0.08062401740754203", + "Likelihood: 0.31456363143571675", + "Likelihood: 0.3205956853710712", + "Likelihood: 0.26384578195762837", + "Likelihood: 0.03056620837109748", + "Likelihood: 0.01681427959104208", + "Likelihood: 0.05298372728897094", + "Likelihood: 0.061123630073679054", + "Likelihood: 0.26202087347649194", + "Likelihood: 0.20298432400749084", + "Likelihood: 0.08077348339256203", + "Likelihood: 0.13786695475905075", + "Likelihood: 0.14217017820969247", + "Likelihood: 0.08339501963655269", + "Likelihood: 0.05745450837042729", + "Likelihood: 0.2923549413565086", + "Likelihood: 0.27777494079062276", + "Likelihood: 0.2852129235795315", + "Likelihood: 0.26414350708667994", + "Likelihood: 0.13846877309960512", + "Likelihood: 0.12372175321502993", + "Likelihood: 0.32011389895616954", + "Likelihood: 0.19413175474205005", + "Likelihood: 0.05558184732243175", + "Likelihood: 0.04098417706414764", + "Likelihood: 0.19741819680265774", + "Likelihood: 0.04659322697197481", + "Likelihood: 0.056166188303199395", + "Likelihood: 0.20503907377003472", + "Likelihood: 0.16727216922631347", + "Likelihood: 0.14274596879210075", + "Likelihood: 0.2614179445253419", + "Likelihood: 0.18548100726503777", + "Likelihood: 0.032968345350135604", + "Likelihood: 0.13159427244970084", + "Likelihood: 0.17192878796564698", + "Likelihood: 0.061357135627495576", + "Likelihood: 0.28227302418906614", + "Likelihood: 0.05336352577353864", + "Likelihood: 0.09643801683563227", + "Likelihood: 0.2684506135532059", + "Likelihood: 0.02751751445296895", + "Likelihood: 0.1761834537279669", + "Likelihood: 0.049718077764583896", + "Likelihood: 0.09236629009438245", + "Likelihood: 0.049002388986036656", + "Likelihood: 0.12495155196246925", + "Likelihood: 0.17263412794509336", + "Likelihood: 0.05327272844051029", + "Likelihood: 0.07775329870820173", + "Likelihood: 0.018269128123835764", + "Likelihood: 0.09807475064782047", + "Likelihood: 0.03130399876122359", + "Likelihood: 0.23349925098818228", + "Likelihood: 0.1816402314331302", + "Likelihood: 0.19699504705664989", + "Likelihood: 0.16880436097871965", + "Likelihood: 0.1246191154745916", + "Likelihood: 0.21112247676902787", + "Likelihood: 0.25998572573099143", + "Likelihood: 0.2577574507459949", + "Likelihood: 0.21989152815357824", + "Likelihood: 0.11862255599484255", + "Likelihood: 0.036732332068967415", + "Likelihood: 0.044484228577011516", + "Likelihood: 0.2293430178193605", + "Likelihood: 0.07336217726368595", + "Likelihood: 0.06134843127063915", + "Likelihood: 0.19516663666912643", + "Likelihood: 0.08827436833901833", + "Likelihood: 0.11810562183804588", + "Likelihood: 0.2665472140725538", + "Likelihood: 0.014421191367073186", + "Likelihood: 0.08902119860119959", + "Likelihood: 0.12162514507161803", + "Likelihood: 0.1961884988606215", + "Likelihood: 0.11912349342814016", + "Likelihood: 0.11406916050657076", + "Likelihood: 0.20699075159935426", + "Likelihood: 0.2686723498023687", + "Likelihood: 0.020570020578206873", + "Likelihood: 0.15970019411594752", + "Likelihood: 0.2111766687132786", + "Likelihood: 0.035646911339701146", + "Likelihood: 0.08847365768221757", + "Likelihood: 0.13634416625177398", + "Likelihood: 0.13805045658526116", + "Likelihood: 0.27897996838363887", + "Likelihood: 0.14658944669934731", + "Likelihood: 0.16830785968074666", + "Likelihood: 0.12112430593736727", + "Likelihood: 0.08607891573592154", + "Likelihood: 0.30124260433889194", + "Likelihood: 0.26084493146666893", + "Likelihood: 0.13539365316690002", + "Likelihood: 0.20232948864846637", + "Likelihood: 0.06625935994899344", + "Likelihood: 0.21904780149214215", + "Likelihood: 0.15485146199314406", + "Likelihood: 0.1882702761147007", + "Likelihood: 0.21875745405814534", + "Likelihood: 0.03483901893900281", + "Likelihood: 0.29695684628189223", + "Likelihood: 0.002975317906479649", + "Likelihood: 0.008947075483630093", + "Likelihood: 0.08589684783935747", + "Likelihood: 0.11010522996680333", + "Likelihood: 0.2955549885952869", + "Likelihood: 0.22254458308157316", + "Likelihood: 0.18229200762539427", + "Likelihood: 0.049064416424688104", + "Likelihood: 0.19443143595046666", + "Likelihood: 0.05583426157141649", + "Likelihood: 0.2436214360807213", + "Likelihood: 0.1375905024161023", + "Likelihood: 0.00939477884049595", + "Likelihood: 0.12674687318356262", + "Likelihood: 0.11927740420192733", + "Likelihood: 0.008459987055328825", + "Likelihood: 0.1365443008078542", + "Likelihood: 0.1635434446804173", + "Likelihood: 0.2503220053936474", + "Likelihood: 0.2296530995773307", + "Likelihood: 0.2189839199324456", + "Likelihood: 0.2264891057955213", + "Likelihood: 0.1389607036394293", + "Likelihood: 0.056866322604281365", + "Likelihood: 0.14539082119264063", + "Likelihood: 0.18551001575157883", + "Likelihood: 0.10747087896454516", + "Likelihood: 0.003893430730755824", + "Likelihood: 0.21638835943573823", + "Likelihood: 0.0964467736783709", + "Likelihood: 0.2815157280046125", + "Likelihood: 0.21479812498358947", + "Likelihood: 0.30733932911627926", + "Likelihood: 0.009330200444309296", + "Likelihood: 0.02798299802616283", + "Likelihood: 0.229748380724042", + "Likelihood: 0.290920207675114", + "Likelihood: 0.2702923242452836", + "Likelihood: 0.06828411351021686", + "Likelihood: 0.20965065809485353", + "Likelihood: 0.08134821278255563", + "Likelihood: 0.015059862885723113", + "Likelihood: 0.0380043238712491", + "Likelihood: 0.1768767904944647", + "Likelihood: 0.2254731444652414", + "Likelihood: 0.1804815188030676", + "Likelihood: 0.05217100161626248", + "Likelihood: 0.052593223034338", + "Likelihood: 0.1456930194407218", + "Likelihood: 0.23097460844909123", + "Likelihood: 0.2951899020403849", + "Likelihood: 0.08537332722860239", + "Likelihood: 0.08248798244353846", + "Likelihood: 0.23118238441705408", + "Likelihood: 0.24583883150348596", + "Likelihood: 0.13328611001897356", + "Likelihood: 0.2281142988091233", + "Likelihood: 0.29342263039592387", + "Likelihood: 0.18484313268247834", + "Likelihood: 0.2812621493122542", + "Likelihood: 0.0726623189097477", + "Likelihood: 0.27602217411302915", + "Likelihood: 0.07734232585311807", + "Likelihood: 0.09911434487457696", + "Likelihood: 0.06218419487600908", + "Likelihood: 0.24508078694916627", + "Likelihood: 0.2842110004016432", + "Likelihood: 0.011117279993152606", + "Likelihood: 0.2691930304479535", + "Likelihood: 0.09676267115051994", + "Likelihood: 0.30875931938143214", + "Likelihood: 0.19901640695110864", + "Likelihood: 0.23214068949932526", + "Likelihood: 0.1354218852471806", + "Likelihood: 0.06186038601149213", + "Likelihood: 0.23496431834087153", + "Likelihood: 0.18243854155302772", + "Likelihood: 0.20800627512570455", + "Likelihood: 0.28314950662892385", + "Likelihood: 0.23203064743623217", + "Likelihood: 0.11170000844417308", + "Likelihood: 0.2141261299795361", + "Likelihood: 0.2135038401708433", + "Likelihood: 0.2194197502753209", + "Likelihood: 0.10549186782384197", + "Likelihood: 0.08154473480812284", + "Likelihood: 0.06158686081063912", + "Likelihood: 0.03642314556408889", + "Likelihood: 0.03163764601839897", + "Likelihood: 0.18893237428888995", + "Likelihood: 0.0041766657603539165", + "Likelihood: 0.04190445128112531", + "Likelihood: 0.053074861528861955", + "Likelihood: 0.044585209830287235", + "Likelihood: 0.1502359588840134", + "Likelihood: 0.09612916654623048", + "Likelihood: 0.005987609276310971", + "Likelihood: 0.1627698883919916", + "Likelihood: 0.1872397918860358", + "Likelihood: 0.25132908979288704", + "Likelihood: 0.22739724862090704", + "Likelihood: 0.17877902687064398", + "Likelihood: 0.27733546131942655", + "Likelihood: 0.2602413738254304", + "Likelihood: 0.14880086316286997", + "Likelihood: 0.23205906134997617", + "Likelihood: 0.006562673056467419", + "Likelihood: 0.17809339996836054", + "Likelihood: 0.24684976134773717", + "Likelihood: 0.012057332235054487", + "Likelihood: 0.266175656894589", + "Likelihood: 0.14355511469130655", + "Likelihood: 0.29744537578210617", + "Likelihood: 0.09050287394756482", + "Likelihood: 0.0612383091674608", + "Likelihood: 0.1694845232627809", + "Likelihood: 0.07198244199828079", + "Likelihood: 0.16632580800964886", + "Likelihood: 0.22631744983257546", + "Likelihood: 0.04003099371566918", + "Likelihood: 0.01902453803493442", + "Likelihood: 0.010243281988680977", + "Likelihood: 0.011006873909398146", + "Likelihood: 0.11813940741246202", + "Likelihood: 0.10336277304532301", + "Likelihood: 0.009355251950191462", + "Likelihood: 0.11131824583357215", + "Likelihood: 0.25062514400384656", + "Likelihood: 0.05873744075483578", + "Likelihood: 0.03634208343935192", + "Likelihood: 0.043938182547500045", + "Likelihood: 0.280447640006844", + "Likelihood: 0.16887932146153117", + "Likelihood: 0.24268508778315925", + "Likelihood: 0.13801717926771181", + "Likelihood: 0.045815278011045374", + "Likelihood: 0.17205876010994609", + "Likelihood: 0.29437935114617886", + "Likelihood: 0.15102642284265114", + "Likelihood: 0.09390047361916616", + "Likelihood: 0.26040578568136896", + "Likelihood: 0.17015825653138814", + "Likelihood: 0.18575895698146122", + "Likelihood: 0.14294935035782105", + "Likelihood: 0.0013082884811308484", + "Likelihood: 0.04366674584302609", + "Likelihood: 0.20222220546904135", + "Likelihood: 0.17933486967183532", + "Likelihood: 0.3053200280398667", + "Likelihood: 0.2782980760649211", + "Likelihood: 0.1423517184210256", + "Likelihood: 0.07593985548763359", + "Likelihood: 0.2032476031251692", + "Likelihood: 0.22730188283214234", + "Likelihood: 0.1925932331383876", + "Likelihood: 0.1618259442128243", + "Likelihood: 0.16013869594818755", + "Likelihood: 0.07848494779856119", + "Likelihood: 0.13395300859296014", + "Likelihood: 0.1372125688576478", + "Likelihood: 0.005463393753968767", + "Likelihood: 0.020321537593914512", + "Likelihood: 0.11748420487129442", + "Likelihood: 0.10701267519318497", + "Likelihood: 0.2426453189335966", + "Likelihood: 0.12418779807983983", + "Likelihood: 0.20134825330532605", + "Likelihood: 0.29498136869613895", + "Likelihood: 0.21031381004354804", + "Likelihood: 0.19893857819284083", + "Likelihood: 0.022197913367741507", + "Likelihood: 0.14433564051012837", + "Likelihood: 0.06374737025087995", + "Likelihood: 0.23448600025246943", + "Likelihood: 0.0655487354560128", + "Likelihood: 0.03725675569219435", + "Likelihood: 0.24570381165914237", + "Likelihood: 0.009209651089734306", + "Likelihood: 0.019921481157271326", + "Likelihood: 0.25210513192929707", + "Likelihood: 0.15705618905794147", + "Likelihood: 0.022843243458563964", + "Likelihood: 0.2465708165243503", + "Likelihood: 0.10354673216063906", + "Likelihood: 0.21841787341286764", + "Likelihood: 0.21367147798954736", + "Likelihood: 0.09699778259607508", + "Likelihood: 0.2323579624049327", + "Likelihood: 0.0702153350942018", + "Likelihood: 0.14420369929268212", + "Likelihood: 0.08571826549904768", + "Likelihood: 0.23164840660133532", + "Likelihood: 0.059430628408160616", + "Likelihood: 0.15488558601686064", + "Likelihood: 0.07919844232157189", + "Likelihood: 0.004910254536827379", + "Likelihood: 0.22145944773556178", + "Likelihood: 0.2660762226884348", + "Likelihood: 0.08655916934206624", + "Likelihood: 0.15012445178061617", + "Likelihood: 0.30119412686716757", + "Likelihood: 0.10201175474191854", + "Likelihood: 0.2288480424429852", + "Likelihood: 0.211622373455718", + "Likelihood: 0.2823770835076777", + "Likelihood: 0.21540059523972666", + "Likelihood: 0.1907283484737892", + "Likelihood: 0.23970890342148987", + "Likelihood: 0.29094046605599644", + "Likelihood: 0.1202735783944546", + "Likelihood: 0.2731639787538731", + "Likelihood: 0.027599789112629922", + "Likelihood: 0.10454433592426439", + "Likelihood: 0.2203821439084967", + "Likelihood: 0.18441098806489908", + "Likelihood: 0.1888484667586659", + "Likelihood: 0.3039876331480313", + "Likelihood: 0.24343110206861587", + "Likelihood: 0.14393415993468353", + "Likelihood: 0.15726462420866852", + "Likelihood: 0.08461384243122931", + "Likelihood: 0.1582313104292861", + "Likelihood: 0.2661271526121148", + "Likelihood: 0.1409648808790466", + "Likelihood: 0.18412307205623074", + "Likelihood: 0.11831433385340404", + "Likelihood: 0.00636522896289137", + "Likelihood: 0.03987980109168228", + "Likelihood: 0.12943450805089918", + "Likelihood: 0.15915870978584734", + "Likelihood: 0.10413805943392605", + "Likelihood: 0.3004553972862299", + "Likelihood: 0.09577415402628435", + "Likelihood: 0.2923061136691342", + "Likelihood: 0.1648137387094411", + "Likelihood: 0.020712362376625205", + "Likelihood: 0.12227577508844925", + "Likelihood: 0.13993646398516285", + "Likelihood: 0.0987671191751548", + "Likelihood: 0.01763764319904014", + "Likelihood: 0.19736004689356593", + "Likelihood: 0.20422745382972418", + "Likelihood: 0.19983505512243677", + "Likelihood: 0.1682746607573137", + "Likelihood: 0.30337601824902305", + "Likelihood: 0.18918442794342805", + "Likelihood: 0.3033242400270611", + "Likelihood: 0.06355932951427352", + "Likelihood: 0.06244055096279047", + "Likelihood: 0.22779955420261241", + "Likelihood: 0.1139178837874982", + "Likelihood: 0.056117815228826286", + "Likelihood: 0.04578647269058828", + "Likelihood: 0.1969616712228184", + "Likelihood: 0.2050854246349959", + "Likelihood: 0.026302439103343223", + "Likelihood: 0.10693405904571335", + "Likelihood: 0.19898658076577141", + "Likelihood: 0.07929417574541256", + "Likelihood: 0.10115216732892773", + "Likelihood: 0.22540900648061263", + "Likelihood: 0.17481322523268786", + "Likelihood: 0.04542558059751553", + "Likelihood: 0.12951836984323467", + "Likelihood: 0.15605994119542194", + "Likelihood: 0.06546544238114438", + "Likelihood: 0.19087657737520727", + "Likelihood: 0.1941375400901104", + "Likelihood: 0.2677237667760549", + "Likelihood: 0.019456177700121983", + "Likelihood: 0.0885556764718562", + "Likelihood: 0.21741655916403843", + "Likelihood: 0.1333230893971366", + "Likelihood: 0.25096255909684145", + "Likelihood: 0.005797686130872302", + "Likelihood: 0.1657084516424722", + "Likelihood: 0.17137456215124025", + "Likelihood: 0.01661528169833462", + "Likelihood: 0.0290437633128777", + "Likelihood: 0.14605013038704734", + "Likelihood: 0.20374069044659981", + "Likelihood: 0.023969604108965308", + "Likelihood: 0.2574533966109796", + "Likelihood: 0.23121283994402453", + "Likelihood: 0.12338536636219898", + "Likelihood: 0.2712927641844408", + "Likelihood: 0.0022210115661760984", + "Likelihood: 0.13115481216914074", + "Likelihood: 0.03870640390152394", + "Likelihood: 0.08144826608983768", + "Likelihood: 0.27304369548299573", + "Likelihood: 0.1887428408536021", + "Likelihood: 0.10705923307767322", + "Likelihood: 0.20533705163981855", + "Likelihood: 0.15306967349984074", + "Likelihood: 0.3004201949504646", + "Likelihood: 0.306357116693404", + "Likelihood: 0.0739463074321585", + "Likelihood: 0.13697367129675111", + "Likelihood: 0.04120229584848031", + "Likelihood: 0.23263452531503986", + "Likelihood: 0.17569588216414112", + "Likelihood: 0.08287532975667135", + "Likelihood: 0.10849016285229268", + "Likelihood: 0.26044872999101193", + "Likelihood: 0.2607348424652687", + "Likelihood: 0.21426255497571634", + "Likelihood: 0.30853869843589327", + "Likelihood: 0.20379818780448952", + "Likelihood: 0.25810782940992477", + "Likelihood: 0.09146471468288526", + "Likelihood: 0.00928555901113324", + "Likelihood: 0.257483659338504", + "Likelihood: 0.0971974208561149", + "Likelihood: 0.19496472326507822", + "Likelihood: 0.020399907419248083", + "Likelihood: 0.212509765888328", + "Likelihood: 0.1464893147075384", + "Likelihood: 0.08923247427016319", + "Likelihood: 0.16140726847597478", + "Likelihood: 0.15140549600546022", + "Likelihood: 0.1370722647302931", + "Likelihood: 0.2538518333162618", + "Likelihood: 0.258337554194617", + "Likelihood: 0.15340860457349792", + "Likelihood: 0.2914402586097388", + "Likelihood: 0.015150184013781175", + "Likelihood: 0.18518018466190136", + "Likelihood: 0.036838725712993375", + "Likelihood: 0.06572762174428214", + "Likelihood: 0.13816379844982882", + "Likelihood: 0.20430738947201207", + "Likelihood: 0.02319838907825957", + "Likelihood: 0.11126247123648038", + "Likelihood: 0.01417038680772304", + "Likelihood: 0.24538388123621863", + "Likelihood: 0.19882219433714715", + "Likelihood: 0.03841166739806583", + "Likelihood: 0.22717436695045187", + "Likelihood: 0.21299622188190284", + "Likelihood: 0.1355113005955408", + "Likelihood: 0.13226712702212684", + "Likelihood: 0.22314864406547982", + "Likelihood: 0.19840054080770445", + "Likelihood: 0.014341412790025846", + "Likelihood: 0.28168969938319605", + "Likelihood: 0.08754337764940512", + "Likelihood: 0.02402327103692299", + "Likelihood: 0.03382616026214944", + "Likelihood: 0.12142258886677226", + "Likelihood: 0.2629667857431377", + "Likelihood: 0.08747837322121108", + "Likelihood: 0.16783453398271658", + "Likelihood: 0.07435739453565912", + "Likelihood: 0.05568726124206783", + "Likelihood: 0.03416803760745859", + "Likelihood: 0.020027639898719512", + "Likelihood: 0.2622799324706445", + "Likelihood: 0.28736215891540484", + "Likelihood: 0.0320065563112554", + "Likelihood: 0.09042756349543311", + "Likelihood: 0.03808894679297944", + "Likelihood: 0.05615172101837627", + "Likelihood: 0.19331832880059843", + "Likelihood: 0.2043266074527171", + "Likelihood: 0.018437795586444355", + "Likelihood: 0.3048808236127398", + "Likelihood: 0.15852299903924938", + "Likelihood: 0.12796646611952164", + "Likelihood: 0.046998292575561734", + "Likelihood: 0.1494929895029537", + "Likelihood: 0.046553749625438304", + "Likelihood: 0.005269976538080795", + "Likelihood: 0.29186363441659896", + "Likelihood: 0.307041288050445", + "Likelihood: 0.20469251861941584", + "Likelihood: 0.05686713829477231", + "Likelihood: 0.043270353976056455", + "Likelihood: 0.0343278394434463", + "Likelihood: 0.10268311151941699", + "Likelihood: 0.031028104926615625", + "Likelihood: 0.29452944426103606", + "Likelihood: 0.008783849254838522", + "Likelihood: 0.18681127245540882", + "Likelihood: 0.06396690709100429", + "Likelihood: 0.08149080593050333", + "Likelihood: 0.19104790136280042", + "Likelihood: 0.21641001646657484", + "Likelihood: 0.251999434877965", + "Likelihood: 0.25114908787522", + "Likelihood: 0.059042982668606483", + "Likelihood: 0.15918610806508976", + "Likelihood: 0.029545883856686245", + "Likelihood: 0.06010106093948204", + "Likelihood: 0.0649621354906516", + "Likelihood: 0.19313187193597708", + "Likelihood: 0.11295218253682987", + "Likelihood: 0.2093331535295614", + "Likelihood: 0.05645774154550585", + "Likelihood: 0.02525636101429283", + "Likelihood: 0.24724363165580812", + "Likelihood: 0.27898115444966287", + "Likelihood: 0.0632701939150581", + "Likelihood: 0.0839519825395797", + "Likelihood: 0.0654688896310595", + "Likelihood: 0.21060997183712646", + "Likelihood: 0.3114027943839424", + "Likelihood: 0.3064298906331288", + "Likelihood: 0.2740760067030924", + "Likelihood: 0.3195559935481534", + "Likelihood: 0.07749792761958893", + "Likelihood: 0.3003872213265561", + "Likelihood: 0.23047689848276973", + "Likelihood: 0.2136589906250219", + "Likelihood: 0.03309972201717694", + "Likelihood: 0.22492823720241598", + "Likelihood: 0.201868727357108", + "Likelihood: 0.3027758805373924", + "Likelihood: 0.2835539502902321", + "Likelihood: 0.24059695219903215", + "Likelihood: 0.11138396895765877", + "Likelihood: 0.11268856935562377", + "Likelihood: 0.3162593442741605", + "Likelihood: 0.2944227907665575", + "Likelihood: 0.1351321416586221", + "Likelihood: 0.285729484682759", + "Likelihood: 0.24352018781937174", + "Likelihood: 0.2376007392900046", + "Likelihood: 0.24259154757323373", + "Likelihood: 0.02534531865795615", + "Likelihood: 0.13854400665960098", + "Likelihood: 0.17557084961134292", + "Likelihood: 0.2468942194295475", + "Likelihood: 0.1375161616299761", + "Likelihood: 0.16010258287757406", + "Likelihood: 0.30656347503939546", + "Likelihood: 0.2955559578258399", + "Likelihood: 0.19458882208430603", + "Likelihood: 0.21623496092029246", + "Likelihood: 0.2904983668299791", + "Likelihood: 0.17750765978921657", + "Likelihood: 0.1347843526576717", + "Likelihood: 0.24249553690851755", + "Likelihood: 0.31402388355055744", + "Likelihood: 0.10474312588153875", + "Likelihood: 0.2916086024870162", + "Likelihood: 0.14009695131171268", + "Likelihood: 0.09709478410132788", + "Likelihood: 0.3146843806352462", + "Likelihood: 0.31251924582559015", + "Likelihood: 0.3217543788821077", + "Likelihood: 0.05362009038497432", + "Likelihood: 0.17779542623543446", + "Likelihood: 0.22059272635494095", + "Likelihood: 0.11047797603414694", + "Likelihood: 0.11840155883987699", + "Likelihood: 0.09596107805474487", + "Likelihood: 0.31714559826351435", + "Likelihood: 0.11414573256640369", + "Likelihood: 0.05870957822666993", + "Likelihood: 0.10100868113721856", + "Likelihood: 0.0468565233610647", + "Likelihood: 0.29459523761616", + "Likelihood: 0.22820683435152722", + "Likelihood: 0.16791159156872884", + "Likelihood: 0.32100092996109064", + "Likelihood: 0.06416324650440482", + "Likelihood: 0.2524845945962122", + "Likelihood: 0.2708271697273168", + "Likelihood: 0.3183442348728953", + "Likelihood: 0.23944136647304426", + "Likelihood: 0.21444311300552618", + "Likelihood: 0.2664533606367243", + "Likelihood: 0.15326962400640973", + "Likelihood: 0.11183797833077792", + "Likelihood: 0.27167414854922095", + "Likelihood: 0.31226900466721774", + "Likelihood: 0.11494507409750725", + "Likelihood: 0.2468173381493523", + "Likelihood: 0.01940562007911429", + "Likelihood: 0.25833930103051456", + "Likelihood: 0.1296741010061383", + "Likelihood: 0.29261125113620406", + "Likelihood: 0.2833732865170331", + "Likelihood: 0.2779528744144469", + "Likelihood: 0.06551727114476413", + "Likelihood: 0.3120694196436214", + "Likelihood: 0.012733616000406955", + "Likelihood: 0.30977697863354814", + "Likelihood: 0.1177642627579804", + "Likelihood: 0.1368945463262895", + "Likelihood: 0.1971052054161182", + "Likelihood: 0.268716646283398", + "Likelihood: 0.3166531201075028", + "Likelihood: 0.1521523877093263", + "Likelihood: 0.30999975419262504", + "Likelihood: 0.23250402059549646", + "Likelihood: 0.2983538499869923", + "Likelihood: 0.27513773851709916", + "Likelihood: 0.21696359231209075", + "Likelihood: 0.022989584516771553", + "Likelihood: 0.28778016999518197", + "Likelihood: 0.24700827772804415", + "Likelihood: 0.3014015918279045", + "Likelihood: 0.16154810056900765", + "Likelihood: 0.25670334071623085", + "Likelihood: 0.1387915873315839", + "Likelihood: 0.3123111779481489", + "Likelihood: 0.2867409797560852", + "Likelihood: 0.2921229519221381", + "Likelihood: 0.2648812280905177", + "Likelihood: 0.21388746537446798", + "Likelihood: 0.2543454996050511", + "Likelihood: 0.184015709501408", + "Likelihood: 0.14511810952688503", + "Likelihood: 0.07431560240849584", + "Likelihood: 0.25793575102659727", + "Likelihood: 0.23755417244781407", + "Likelihood: 0.29670696545724257", + "Likelihood: 0.2616854931899381", + "Likelihood: 0.24825926499296788", + "Likelihood: 0.3154672318836072", + "Likelihood: 0.29674442141148905", + "Likelihood: 0.19994480877630136", + "Likelihood: 0.29606033130327686", + "Likelihood: 0.0949134556429366", + "Likelihood: 0.1193625965617501", + "Likelihood: 0.3192975812854978", + "Likelihood: 0.0697267729263259", + "Likelihood: 0.2714865853585937", + "Likelihood: 0.1513134068933203", + "Likelihood: 0.2304505800903032", + "Likelihood: 0.07900390561216737", + "Likelihood: 0.10405214617243005", + "Likelihood: 0.3013363549187382", + "Likelihood: 0.3058847535883011", + "Likelihood: 0.19383270612232129", + "Likelihood: 0.3152064448349728", + "Likelihood: 0.14608807721941242", + "Likelihood: 0.190163292437463", + "Likelihood: 0.1030171492864831", + "Likelihood: 0.290927154202821", + "Likelihood: 0.25085345290534805", + "Likelihood: 0.26265971544536465", + "Likelihood: 0.25581139696821364", + "Likelihood: 0.19412731678336834", + "Likelihood: 0.017818461952671727", + "Likelihood: 0.12018998904324883", + "Likelihood: 0.3207535276925807", + "Likelihood: 0.04027008759771978", + "Likelihood: 0.22607724890779604", + "Likelihood: 0.20239078280085301", + "Likelihood: 0.12813992081954728", + "Likelihood: 0.2807993980062725", + "Likelihood: 0.2172712882214551", + "Likelihood: 0.20848987507892822", + "Likelihood: 0.06460169595457133", + "Likelihood: 0.11470022369523465", + "Likelihood: 0.3113818784535631", + "Likelihood: 0.00835575283530031", + "Likelihood: 0.28977196947973066", + "Likelihood: 0.2933559732104484", + "Likelihood: 0.04233191950124811", + "Likelihood: 0.09332430427480404", + "Likelihood: 0.2999398953681784", + "Likelihood: 0.11912031105275858", + "Likelihood: 0.011574700021703492", + "Likelihood: 0.23676271576543714", + "Likelihood: 0.2093603432002219", + "Likelihood: 0.009738105638666963", + "Likelihood: 0.23155314773298952", + "Likelihood: 0.19567810240598413", + "Likelihood: 0.09433506694172879", + "Likelihood: 0.2831139755765848", + "Likelihood: 0.26030326270446624", + "Likelihood: 0.20447322888448033", + "Likelihood: 0.251242188393036", + "Likelihood: 0.2543888181723918", + "Likelihood: 0.13129495709841213", + "Likelihood: 0.25910601954831775", + "Likelihood: 0.09455818285529197", + "Likelihood: 0.02179829188462674", + "Likelihood: 0.30506565059764235", + "Likelihood: 0.32373382923421695", + "Likelihood: 0.2843834993444984", + "Likelihood: 0.14885216736439083", + "Likelihood: 0.26707348749784754", + "Likelihood: 0.27821359836156884", + "Likelihood: 0.14622016560562484", + "Likelihood: 0.30137635318303774", + "Likelihood: 0.26603360912273366", + "Likelihood: 0.3121448234480715", + "Likelihood: 0.08648275362212184", + "Likelihood: 0.29957436156672684", + "Likelihood: 0.16518615548155366", + "Likelihood: 0.29955119365214133", + "Likelihood: 0.1885029646084964", + "Likelihood: 0.26746998487357065", + "Likelihood: 0.09407521598613873", + "Likelihood: 0.19840448697320467", + "Likelihood: 0.28825358153625724", + "Likelihood: 0.3172319146753494", + "Likelihood: 0.18489760763083024", + "Likelihood: 0.025413273413400383", + "Likelihood: 0.02440409552295456", + "Likelihood: 0.3123787110660724", + "Likelihood: 0.1242578121527304", + "Likelihood: 0.20525529317416819", + "Likelihood: 0.2369274585590322", + "Likelihood: 0.21593915507791864", + "Likelihood: 0.07468696681813908", + "Likelihood: 0.24381409597726172", + "Likelihood: 0.16965383482185514", + "Likelihood: 0.2369071742705042", + "Likelihood: 0.2517307070872527", + "Likelihood: 0.00890480977486671", + "Likelihood: 0.22337975509669525", + "Likelihood: 0.30883030599652256", + "Likelihood: 0.32079831787610685", + "Likelihood: 0.30203464841912364", + "Likelihood: 0.30480923695126905", + "Likelihood: 0.30018642192215617", + "Likelihood: 0.1558120504172084", + "Likelihood: 0.06715382248790026", + "Likelihood: 0.2297693245468581", + "Likelihood: 0.03864092479083949", + "Likelihood: 0.07564206956404504", + "Likelihood: 0.021474502822671007", + "Likelihood: 0.16831075777137774", + "Likelihood: 0.28929592277299837", + "Likelihood: 0.20843981998737462", + "Likelihood: 0.25072549238611075", + "Likelihood: 0.30437406457004884", + "Likelihood: 0.11168205336943582", + "Likelihood: 0.10449991970679179", + "Likelihood: 0.25124823274969116", + "Likelihood: 0.12864045915306638", + "Likelihood: 0.2892559083260384", + "Likelihood: 0.2864302413069665", + "Likelihood: 0.1869412964660205", + "Likelihood: 0.153434753072612", + "Likelihood: 0.29161682442872666", + "Likelihood: 0.3177492150351406", + "Likelihood: 0.0841753698500695", + "Likelihood: 0.15342924569276467", + "Likelihood: 0.27849502658684383", + "Likelihood: 0.19097316382840598", + "Likelihood: 0.09131011638938347", + "Likelihood: 0.3030381795598993", + "Likelihood: 0.0737192020582533", + "Likelihood: 0.32080504139670507", + "Likelihood: 0.3119492248129041", + "Likelihood: 0.009945996446357824", + "Likelihood: 0.2880727456390805", + "Likelihood: 0.2132417917775103", + "Likelihood: 0.31292503352710843", + "Likelihood: 0.1370699007227856", + "Likelihood: 0.19362965035235188", + "Likelihood: 0.302507739684522", + "Likelihood: 0.3040388024465033", + "Likelihood: 0.23726920744975538", + "Likelihood: 0.235822731071721", + "Likelihood: 0.1268632636857003", + "Likelihood: 0.22003886339236237", + "Likelihood: 0.24437261862859494", + "Likelihood: 0.2952148153177575", + "Likelihood: 0.2131884601480523", + "Likelihood: 0.2509013452545873", + "Likelihood: 0.05921137287039414", + "Likelihood: 0.1816081551653537", + "Likelihood: 0.23692103628837188", + "Likelihood: 0.14867168501697467", + "Likelihood: 0.300229328066917", + "Likelihood: 0.04942615864183684", + "Likelihood: 0.19037973957045845", + "Likelihood: 0.2178558635254142", + "Likelihood: 0.2689493682540116", + "Likelihood: 0.20319134141461337", + "Likelihood: 0.28418605868524394", + "Likelihood: 0.28649938922199814", + "Likelihood: 0.32222492984703477", + "Likelihood: 0.2784428416038638", + "Likelihood: 0.17130551714956965", + "Likelihood: 0.07832312206010741", + "Likelihood: 0.2957977836672897", + "Likelihood: 0.26489010505949195", + "Likelihood: 0.2794233502146301", + "Likelihood: 0.2901108403910513", + "Likelihood: 0.22345230379434589", + "Likelihood: 0.016528198249320124", + "Likelihood: 0.2505246442675582", + "Likelihood: 0.1581930690875049", + "Likelihood: 0.272369876101389", + "Likelihood: 0.2418219401996724", + "Likelihood: 0.21146053444293547", + "Likelihood: 0.1600967305756099", + "Likelihood: 0.21431943196869144", + "Likelihood: 0.11291814840762648", + "Likelihood: 0.2923894893421205", + "Likelihood: 0.19382472584270613", + "Likelihood: 0.14350115062518126", + "Likelihood: 0.1339013320758157", + "Likelihood: 0.24215196756591398", + "Likelihood: 0.32079520637755105", + "Likelihood: 0.08593730838550301", + "Likelihood: 0.0915671679082846", + "Likelihood: 0.17713325891950965", + "Likelihood: 0.1484190318951595", + "Likelihood: 0.1742373809288826", + "Likelihood: 0.30868613244880005", + "Likelihood: 0.1418649873365736", + "Likelihood: 0.20751495358259658", + "Likelihood: 0.06974209672276267", + "Likelihood: 0.15995283615469022", + "Likelihood: 0.279215243952012", + "Likelihood: 0.23066862378370262", + "Likelihood: 0.3179232768861153", + "Likelihood: 0.2888646828412087", + "Likelihood: 0.01229031683083869", + "Likelihood: 0.27089847747344253", + "Likelihood: 0.13979191910665173", + "Likelihood: 0.0977750248423647", + "Likelihood: 0.07704649018727258", + "Likelihood: 0.2099579387027825", + "Likelihood: 0.12943339532380152", + "Likelihood: 0.2673765385148939", + "Likelihood: 0.2951420413229434", + "Likelihood: 0.3229405397021885", + "Likelihood: 0.2780049058867088", + "Likelihood: 0.05840432065000765", + "Likelihood: 0.3081218321599393", + "Likelihood: 0.2266998238853881", + "Likelihood: 0.10300699143272309", + "Likelihood: 0.25224125990451673", + "Likelihood: 0.22233500793699928", + "Likelihood: 0.14646761445541256", + "Likelihood: 0.3187669100805705", + "Likelihood: 0.18868972208906118", + "Likelihood: 0.2296567945774517", + "Likelihood: 0.321199824268598", + "Likelihood: 0.07313645094318105", + "Likelihood: 0.29066796491633795", + "Likelihood: 0.3222652618319796", + "Likelihood: 0.16818706875726352", + "Likelihood: 0.04670084583101125", + "Likelihood: 0.12921206842572905", + "Likelihood: 0.29040313052728156", + "Likelihood: 0.2768763100977773", + "Likelihood: 0.23741507852009636", + "Likelihood: 0.132692290716283", + "Likelihood: 0.10199110938707606", + "Likelihood: 0.2697352970882652", + "Likelihood: 0.11488695247890897", + "Likelihood: 0.18827512453890075", + "Likelihood: 0.2369804330456866", + "Likelihood: 0.2697613592763056", + "Likelihood: 0.2916460229377242", + "Likelihood: 0.27322577692018585", + "Likelihood: 0.3127526800403761", + "Likelihood: 0.11074174805832011", + "Likelihood: 0.15109424293374588", + "Likelihood: 0.19833057164092943", + "Likelihood: 0.11703933645997922", + "Likelihood: 0.24117442550508958", + "Likelihood: 0.05400207875676287", + "Likelihood: 0.24527061328619354", + "Likelihood: 0.11709469689441065", + "Likelihood: 0.2887461464647274", + "Likelihood: 0.11695520169397988", + "Likelihood: 0.3144004859874502", + "Likelihood: 0.1494560346440628", + "Likelihood: 0.20321381576650072", + "Likelihood: 0.24057638881870513", + "Likelihood: 0.3121510426064254", + "Likelihood: 0.15407552911843364", + "Likelihood: 0.2919501990444823", + "Likelihood: 0.2823073259795071", + "Likelihood: 0.3119091757121985", + "Likelihood: 0.2775292365358909", + "Likelihood: 0.18085342670251076", + "Likelihood: 0.2991815266019529", + "Likelihood: 0.2238268793290549", + "Likelihood: 0.252165557843131", + "Likelihood: 0.16897756031987632", + "Likelihood: 0.20907812148515437", + "Likelihood: 0.30825539028074483", + "Likelihood: 0.14784640636204244", + "Likelihood: 0.1233581093577829", + "Likelihood: 0.2737917571458233", + "Likelihood: 0.24952016660717574", + "Likelihood: 0.2649857813977896", + "Likelihood: 0.2015682791675279", + "Likelihood: 0.3143724176597207", + "Likelihood: 0.15261381206650848", + "Likelihood: 0.3192149778192818", + "Likelihood: 0.13553386086914998", + "Likelihood: 0.23019825669960434", + "Likelihood: 0.2812262403762425", + "Likelihood: 0.21363903422793157", + "Likelihood: 0.2619369559437767", + "Likelihood: 0.2481928752032798", + "Likelihood: 0.21349802588007435", + "Likelihood: 0.15764843707150314", + "Likelihood: 0.3158610637176008", + "Likelihood: 0.11246087963136285", + "Likelihood: 0.27806004541427926", + "Likelihood: 0.2777183131206609", + "Likelihood: 0.025997437864934206", + "Likelihood: 0.21241303843978185", + "Likelihood: 0.28691888411770033", + "Likelihood: 0.22537699392863622", + "Likelihood: 0.3187986076206924", + "Likelihood: 0.2808772476208797", + "Likelihood: 0.1337180225829296", + "Likelihood: 0.18789512812384554", + "Likelihood: 0.11229407576833209", + "Likelihood: 0.053428955661142946", + "Likelihood: 0.17938781920312655", + "Likelihood: 0.25411518282484075", + "Likelihood: 0.08547337365259035", + "Likelihood: 0.03736533024768326", + "Likelihood: 0.26765662977790483", + "Likelihood: 0.05865321226555143", + "Likelihood: 0.12152560968592631", + "Likelihood: 0.20998531718428676", + "Likelihood: 0.29711819031352493", + "Likelihood: 0.065270759439233", + "Likelihood: 0.14561450602861853", + "Likelihood: 0.303409161866672", + "Likelihood: 0.29888302160993957", + "Likelihood: 0.2471842089194829", + "Likelihood: 0.2850433165407496", + "Likelihood: 0.2692854590134723", + "Likelihood: 0.2938153653873281", + "Likelihood: 0.12896096648048722", + "Likelihood: 0.3051883273138236", + "Likelihood: 0.17285048483584642", + "Likelihood: 0.050855170869212145", + "Likelihood: 0.1598159096036641", + "Likelihood: 0.24767228880743195", + "Likelihood: 0.07444348000075629", + "Likelihood: 0.19607726806369966", + "Likelihood: 0.31095868821520417", + "Likelihood: 0.2362380382943879", + "Likelihood: 0.23856284623022347", + "Likelihood: 0.13542329802944242", + "Likelihood: 0.20232764020885616", + "Likelihood: 0.13594623823717836", + "Likelihood: 0.2524947974468419", + "Likelihood: 0.2980016838805341", + "Likelihood: 0.3132260369732514", + "Likelihood: 0.08514678966056363", + "Likelihood: 0.2916776537077139", + "Likelihood: 0.18314301331961216", + "Likelihood: 0.19984650883660093", + "Likelihood: 0.19288157921151078", + "Likelihood: 0.28347461969188026", + "Likelihood: 0.2647998621487242", + "Likelihood: 0.28626921357044866", + "Likelihood: 0.2902710392234402", + "Likelihood: 0.05990310586513515", + "Likelihood: 0.2322836109233143", + "Likelihood: 0.3172300035815807", + "Likelihood: 0.04964135533413868", + "Likelihood: 0.19972547785578665", + "Likelihood: 0.221588609748743", + "Likelihood: 0.006682076131537961", + "Likelihood: 0.30713660614845206", + "Likelihood: 0.04079929872262811", + "Likelihood: 0.1929006202193605", + "Likelihood: 0.17847781459946346", + "Likelihood: 0.3032124136876006", + "Likelihood: 0.1364595637317656", + "Likelihood: 0.27456268167926545", + "Likelihood: 0.11715466433691674", + "Likelihood: 0.18991648498916255", + "Likelihood: 0.09933238269008132", + "Likelihood: 0.3070974066506395", + "Likelihood: 0.15236574993101715", + "Likelihood: 0.1657764142323044", + "Likelihood: 0.28199519154548697", + "Likelihood: 0.29476635550840047", + "Likelihood: 0.009806743766167284", + "Likelihood: 0.0699177276822157", + "Likelihood: 0.24271846944118064", + "Likelihood: 0.2586752565593006", + "Likelihood: 0.13770929963671355", + "Likelihood: 0.09720972105130364", + "Likelihood: 0.21013973409328848", + "Likelihood: 0.3007824562935286", + "Likelihood: 0.2837992058271253", + "Likelihood: 0.19892128634852774", + "Likelihood: 0.3175573393435412", + "Likelihood: 0.07670819177244362", + "Likelihood: 0.31478592450481785", + "Likelihood: 0.29252767184744927", + "Likelihood: 0.13005041639342566", + "Likelihood: 0.30546189128335066", + "Likelihood: 0.07080382055421754", + "Likelihood: 0.1526771104746443", + "Likelihood: 0.32069618839221864", + "Likelihood: 0.29340468710061807", + "Likelihood: 0.29046932781342716", + "Likelihood: 0.13149067854934482", + "Likelihood: 0.2777297281982996", + "Likelihood: 0.14002734507392323", + "Likelihood: 0.303851634477221", + "Likelihood: 0.1573123023071375", + "Likelihood: 0.23850694909890466", + "Likelihood: 0.11018484961992023", + "Likelihood: 0.2360453692251804", + "Likelihood: 0.09954429213804353", + "Likelihood: 0.28476450960640604", + "Likelihood: 0.06442719664679732", + "Likelihood: 0.1649354157510925", + "Likelihood: 0.2035677355172259", + "Likelihood: 0.07459083212370156", + "Likelihood: 0.08905134983520335", + "Likelihood: 0.30285633788345945", + "Likelihood: 0.1830736859682409", + "Likelihood: 0.13243311356128304", + "Likelihood: 0.30857932721303916", + "Likelihood: 0.24137037218279095", + "Likelihood: 0.1910334387630669", + "Likelihood: 0.30714628854556786", + "Likelihood: 0.2954137489009469", + "Likelihood: 0.11524007618949124", + "Likelihood: 0.14329940680481185", + "Likelihood: 0.1892581434284247", + "Likelihood: 0.24692784341587445", + "Likelihood: 0.2948514748380821", + "Likelihood: 0.29478033088496164", + "Likelihood: 0.018531072878121932", + "Likelihood: 0.009624495362920994", + "Likelihood: 0.21460528809022214", + "Likelihood: 0.30889295721640025", + "Likelihood: 0.306135894962206", + "Likelihood: 0.18323591176335627", + "Likelihood: 0.2497520037352582", + "Likelihood: 0.25020123784756415", + "Likelihood: 0.2361565996298872", + "Likelihood: 0.27476802132126854", + "Likelihood: 0.14058584417475636", + "Likelihood: 0.2975470813613464", + "Likelihood: 0.03860271234066933", + "Likelihood: 0.17982055933695792", + "Likelihood: 0.09902576322449642", + "Likelihood: 0.10942098652099287", + "Likelihood: 0.3145123769149998", + "Likelihood: 0.17761184527785995", + "Likelihood: 0.024524190707169918", + "Likelihood: 0.12874491775984306", + "Likelihood: 0.3039619465111921", + "Likelihood: 0.24371603148984433", + "Likelihood: 0.20341817780913476", + "Likelihood: 0.27045590956657684", + "Likelihood: 0.2583691935378612", + "Likelihood: 0.1512108557101298", + "Likelihood: 0.07570542874787539", + "Likelihood: 0.2334943551543351", + "Likelihood: 0.08497129682203314", + "Likelihood: 0.034196094406950546", + "Likelihood: 0.2858801742901744", + "Likelihood: 0.3154387567980009", + "Likelihood: 0.3115853513679572", + "Likelihood: 0.24255693704509554", + "Likelihood: 0.28093262223739385", + "Likelihood: 0.29188978281617195", + "Likelihood: 0.25587648118657014", + "Likelihood: 0.3069758410262109", + "Likelihood: 0.1664677186718195", + "Likelihood: 0.09188173717226439", + "Likelihood: 0.27844903579096925", + "Likelihood: 0.16405199740658188", + "Likelihood: 0.15415632649495786", + "Likelihood: 0.2778720521261735", + "Likelihood: 0.27209581267678495", + "Likelihood: 0.31857872662069947", + "Likelihood: 0.2855523471513844", + "Likelihood: 0.3121948009334693", + "Likelihood: 0.015060280890499786", + "Likelihood: 0.2678466674291499", + "Likelihood: 0.025038634458768895", + "Likelihood: 0.20377433490007987", + "Likelihood: 0.23268579734907455", + "Likelihood: 0.14789629147215974", + "Likelihood: 0.20886860000755547", + "Likelihood: 0.2565655366042359", + "Likelihood: 0.23526015499142164", + "Likelihood: 0.3034516067014563", + "Likelihood: 0.3245989548431352", + "Likelihood: 0.1979477710485385", + "Likelihood: 0.269726266616032", + "Likelihood: 0.25294469040819106", + "Likelihood: 0.3114783566489416", + "Likelihood: 0.04708332570015489", + "Likelihood: 0.24516137230688534", + "Likelihood: 0.22301981341581967", + "Likelihood: 0.11608647364234514", + "Likelihood: 0.26496468711036214", + "Likelihood: 0.26126057793572666", + "Likelihood: 0.13926285112139938", + "Likelihood: 0.2863369739153583", + "Likelihood: 0.27351261961295237", + "Likelihood: 0.29840795594432257", + "Likelihood: 0.11106524347924181", + "Likelihood: 0.31270198361264917", + "Likelihood: 0.025158125833099242", + "Likelihood: 0.3142253548152456", + "Likelihood: 0.2538738962422758", + "Likelihood: 0.23630102735528755", + "Likelihood: 0.07108252095539574", + "Likelihood: 0.2980084890767245", + "Likelihood: 0.3102346995249678", + "Likelihood: 0.19138753165019612", + "Likelihood: 0.28102208573583054", + "Likelihood: 0.24488736306117878", + "Likelihood: 0.05106808416666272", + "Likelihood: 0.3031165044549647", + "Likelihood: 0.2849445127852772", + "Likelihood: 0.25823967181106666", + "Likelihood: 0.2594048878081343", + "Likelihood: 0.07753723110439574", + "Likelihood: 0.29434250559452185", + "Likelihood: 0.15582593574845044", + "Likelihood: 0.24982264994006317", + "Likelihood: 0.2922399366625663", + "Likelihood: 0.2326403793858854", + "Likelihood: 0.259446116703626", + "Likelihood: 0.2527457787514931", + "Likelihood: 0.11429486838945137", + "Likelihood: 0.24249192018165205", + "Likelihood: 0.0864467249803181", + "Likelihood: 0.2585860808161118", + "Likelihood: 0.3164024473945526", + "Likelihood: 0.0160762332774737", + "Likelihood: 0.2743288920821871", + "Likelihood: 0.28969908553787976", + "Likelihood: 0.14938661099202644", + "Likelihood: 0.30547310497230734", + "Likelihood: 0.24144965095637533", + "Likelihood: 0.2680688231054674", + "Likelihood: 0.312348352701991", + "Likelihood: 0.21720101738092668", + "Likelihood: 0.23053250818796744", + "Likelihood: 0.24095937070647144", + "Likelihood: 0.18077338744499866", + "Likelihood: 0.25155155786547484", + "Likelihood: 0.31015421082663003", + "Likelihood: 0.14973846354076736", + "Likelihood: 0.23947757570795306", + "Likelihood: 0.23811649691390838", + "Likelihood: 0.04038318147186157", + "Likelihood: 0.2206460931228841", + "Likelihood: 0.28925665474497153", + "Likelihood: 0.058408739937004746", + "Likelihood: 0.2546135768560508", + "Likelihood: 0.30774493676480863", + "Likelihood: 0.25916949143630125", + "Likelihood: 0.30508252689216575", + "Likelihood: 0.1047537522264308", + "Likelihood: 0.19464211356865618", + "Likelihood: 0.07621666713863534", + "Likelihood: 0.2999504085775197", + "Likelihood: 0.2868726434373773", + "Likelihood: 0.06807100088870564", + "Likelihood: 0.2844135214551305", + "Likelihood: 0.18335956674063428", + "Likelihood: 0.1420820859520656", + "Likelihood: 0.1756953769199706", + "Likelihood: 0.305819845748924", + "Likelihood: 0.06946395903515035", + "Likelihood: 0.2499064302058957", + "Likelihood: 0.08402487189660332", + "Likelihood: 0.030482407444550986", + "Likelihood: 0.27053798180480554", + "Likelihood: 0.29949000680003723", + "Likelihood: 0.15804875866709336", + "Likelihood: 0.18847308754085362", + "Likelihood: 0.3089256286370262", + "Likelihood: 0.22917219871866915", + "Likelihood: 0.17382110673812526", + "Likelihood: 0.13669765694745376", + "Likelihood: 0.1092198969871246", + "Likelihood: 0.01249490831857202", + "Likelihood: 0.022737581688326063", + "Likelihood: 0.17290124063686482", + "Likelihood: 0.21220440137712576", + "Likelihood: 0.2969628010685857", + "Likelihood: 0.2530400890338978", + "Likelihood: 0.22415980927817114", + "Likelihood: 0.316428844231056", + "Likelihood: 0.22911000960155717", + "Likelihood: 0.28922904843579794", + "Likelihood: 0.21658858501866124", + "Likelihood: 0.10356507632792833", + "Likelihood: 0.31801355333926984", + "Likelihood: 0.2830674705601002", + "Likelihood: 0.10771764688189356", + "Likelihood: 0.1642012242045967", + "Likelihood: 0.019891584371996514", + "Likelihood: 0.14221131081443336", + "Likelihood: 0.22942893482019705", + "Likelihood: 0.1069109081023749", + "Likelihood: 0.26502599235860996", + "Likelihood: 0.19704288536443107", + "Likelihood: 0.12509086388412416", + "Likelihood: 0.2721472401877011", + "Likelihood: 0.2993007155134703", + "Likelihood: 0.19378610222740594", + "Likelihood: 0.3077275101688099", + "Likelihood: 0.021889859662693235", + "Likelihood: 0.028791219386701497", + "Likelihood: 0.31065408101678443", + "Likelihood: 0.19876124642878834", + "Likelihood: 0.23153106299021592", + "Likelihood: 0.21934341666988041", + "Likelihood: 0.04473388155761919", + "Likelihood: 0.22913292917351893", + "Likelihood: 0.020819662430281192", + "Likelihood: 0.30993019007803246", + "Likelihood: 0.29089536473871386", + "Likelihood: 0.09599195323281659", + "Likelihood: 0.2921349262467775", + "Likelihood: 0.2697988971858578", + "Likelihood: 0.1790152162395465", + "Likelihood: 0.06770988069503539", + "Likelihood: 0.15435792801485013", + "Likelihood: 0.315438207242484", + "Likelihood: 0.3159383493953981", + "Likelihood: 0.22344415928915423", + "Likelihood: 0.17769406337452232", + "Likelihood: 0.10116279404093263", + "Likelihood: 0.15427058814122746", + "Likelihood: 0.2065538649287449", + "Likelihood: 0.10896928330262844", + "Likelihood: 0.24581591167287264", + "Likelihood: 0.25807387674743126", + "Likelihood: 0.12103117577507673", + "Likelihood: 0.24981105034381507", + "Likelihood: 0.20267206428133663", + "Likelihood: 0.2337386327725435", + "Likelihood: 0.17707869279946617", + "Likelihood: 0.2796439097143129", + "Likelihood: 0.2047361431370857", + "Likelihood: 0.15957193186907448", + "Likelihood: 0.16956834716959407", + "Likelihood: 0.15095204588921446", + "Likelihood: 0.2967104153117351", + "Likelihood: 0.2892250944591763", + "Likelihood: 0.264635525141574", + "Likelihood: 0.20268899659876266", + "Likelihood: 0.31303143392003546", + "Likelihood: 0.28902704125884904", + "Likelihood: 0.1892897692661756", + "Likelihood: 0.2024130917124336", + "Likelihood: 0.3018609122407584", + "Likelihood: 0.3112649463027553", + "Likelihood: 0.29278556106630793", + "Likelihood: 0.25195797924624325", + "Likelihood: 0.18644247095229358", + "Likelihood: 0.22635451094410636", + "Likelihood: 0.1405889996369455", + "Likelihood: 0.26032439932237994", + "Likelihood: 0.3204082070093995", + "Likelihood: 0.07660203871853624", + "Likelihood: 0.18262724725784707", + "Likelihood: 0.1303618017722617", + "Likelihood: 0.10331250208905977", + "Likelihood: 0.20709531538212966", + "Likelihood: 0.2950384494884472", + "Likelihood: 0.12693500868646437", + "Likelihood: 0.28623013744774556", + "Likelihood: 0.3040325899418004", + "Likelihood: 0.26922111539239346", + "Likelihood: 0.04004261688100314", + "Likelihood: 0.3095102115000658", + "Likelihood: 0.31133999921422445", + "Likelihood: 0.314771302126099", + "Likelihood: 0.3118838275817921", + "Likelihood: 0.25370515175666764", + "Likelihood: 0.30239470683446773", + "Likelihood: 0.20239589084531032", + "Likelihood: 0.15143085485340402", + "Likelihood: 0.25204538839740465", + "Likelihood: 0.1778414284637215", + "Likelihood: 0.2234088942772311", + "Likelihood: 0.23268092273016633", + "Likelihood: 0.27018099070506346", + "Likelihood: 0.30933117098671326", + "Likelihood: 0.21389712231602606", + "Likelihood: 0.3019409866758076", + "Likelihood: 0.14013328819713344", + "Likelihood: 0.32431090941131097", + "Likelihood: 0.30030343175333074", + "Likelihood: 0.19604502005541602", + "Likelihood: 0.31674605210327433", + "Likelihood: 0.25235855524794104", + "Likelihood: 0.2205609132037727", + "Likelihood: 0.04011603255038648", + "Likelihood: 0.12851894524550297", + "Likelihood: 0.18709876599988717", + "Likelihood: 0.10784573721126278", + "Likelihood: 0.233170236480709", + "Likelihood: 0.23799683051240142", + "Likelihood: 0.039753756967053536", + "Likelihood: 0.26605559438356513", + "Likelihood: 0.21238230915884826", + "Likelihood: 0.2404909272249862", + "Likelihood: 0.07531166746797366", + "Likelihood: 0.030514550369428167", + "Likelihood: 0.23822803584430313", + "Likelihood: 0.30147906556074666", + "Likelihood: 0.22134134946944586", + "Likelihood: 0.2721493869625097", + "Likelihood: 0.1798286689641257", + "Likelihood: 0.3179264607557186", + "Likelihood: 0.26456368406206976", + "Likelihood: 0.2670820912672862", + "Likelihood: 0.08676767693508167", + "Likelihood: 0.31125446049809363", + "Likelihood: 0.3147726430088926", + "Likelihood: 0.21810116392801382", + "Likelihood: 0.10427194954562505", + "Likelihood: 0.1831353902209953", + "Likelihood: 0.06634013657718664", + "Likelihood: 0.2238642105838814", + "Likelihood: 0.15001268911698878", + "Likelihood: 0.30684038661123514", + "Likelihood: 0.32152768371164575", + "Likelihood: 0.05986288835788833", + "Likelihood: 0.12355756370857002", + "Likelihood: 0.23772230351400966", + "Likelihood: 0.12278944548669378", + "Likelihood: 0.30647015083451884", + "Likelihood: 0.15308429652070532", + "Likelihood: 0.3157217358324464", + "Likelihood: 0.17705341040598446", + "Likelihood: 0.22160505068806213", + "Likelihood: 0.12106646582395264", + "Likelihood: 0.19915264020720044", + "Likelihood: 0.3074247628734754", + "Likelihood: 0.19856381781268526", + "Likelihood: 0.10298184825870454", + "Likelihood: 0.311461009671775", + "Likelihood: 0.053364898552517956", + "Likelihood: 0.30882387201574824", + "Likelihood: 0.25028979945445884", + "Likelihood: 0.16386007184903842", + "Likelihood: 0.16361767342616934", + "Likelihood: 0.237662929981435", + "Likelihood: 0.07771368079307028", + "Likelihood: 0.17644077599040148", + "Likelihood: 0.20823096909252775", + "Likelihood: 0.3074782951556923", + "Likelihood: 0.045969395465592484", + "Likelihood: 0.3145684085672134", + "Likelihood: 0.2864543388821565", + "Likelihood: 0.26754755068157643", + "Likelihood: 0.2766593937022405", + "Likelihood: 0.31958915422870005", + "Likelihood: 0.17201170408023117", + "Likelihood: 0.09693942498586818", + "Likelihood: 0.2914035050905627", + "Likelihood: 0.3054377828314576", + "Likelihood: 0.22843184480415807", + "Likelihood: 0.30968785496394574", + "Likelihood: 0.2518942143828556", + "Likelihood: 0.2099758254722195", + "Likelihood: 0.08027188697949308", + "Likelihood: 0.16643801189697596", + "Likelihood: 0.30332625726552703", + "Likelihood: 0.16031058066872148", + "Likelihood: 0.3187605569295695", + "Likelihood: 0.21354544437543116", + "Likelihood: 0.31706666575711945", + "Likelihood: 0.323781599027803", + "Likelihood: 0.1484407270550038", + "Likelihood: 0.10608753046226499", + "Likelihood: 0.03855563374009703", + "Likelihood: 0.1518729683035541", + "Likelihood: 0.22827554024803098", + "Likelihood: 0.17999838547538877", + "Likelihood: 0.008128150553071919", + "Likelihood: 0.2460488268541951", + "Likelihood: 0.23082914304070204", + "Likelihood: 0.3138608586008805", + "Likelihood: 0.27575074672597183", + "Likelihood: 0.29573465998862364", + "Likelihood: 0.17703038107941904", + "Likelihood: 0.16968354164896837", + "Likelihood: 0.27624056381079165", + "Likelihood: 0.2973891691386823", + "Likelihood: 0.008181299109368429", + "Likelihood: 0.05854377107648863", + "Likelihood: 0.21221186891120428", + "Likelihood: 0.29906227026768634", + "Likelihood: 0.02823532962733171", + "Likelihood: 0.14175160593691222" + ], + "marker": { + "color": [ + 0.037390354701688756, + 0.1366727257673293, + 0.01896497711355174, + 0.1781084082181187, + 0.16583431190340636, + 0.16933992352720612, + 0.02721398308320946, + 0.05444590031344, + 0.1602076965090202, + 0.028660090870436354, + 0.1431557751074098, + 0.17781852725840952, + 0.03915164588910641, + 0.039346890648079516, + 0.07420562653595361, + 0.2690757579602086, + 0.22420389550455166, + 0.14265936138123578, + 0.1012185970580372, + 0.08046826193309256, + 0.013757350834253623, + 0.26583073666915924, + 0.14896841524152138, + 0.025169403311690135, + 0.29616796169523407, + 0.1161562210830151, + 0.07577931807491205, + 0.1186321934808284, + 0.13097497941091385, + 0.04538348401387904, + 0.12105646828489361, + 0.15825600023159617, + 0.16806005874813063, + 0.11434010703653359, + 0.07562044835890457, + 0.1292573679517499, + 0.0720257151671472, + 0.06685533169077722, + 0.18107277376513067, + 0.08689201478802383, + 0.22711803350352475, + 0.21400770814789916, + 0.09394683587270067, + 0.24699644943865698, + 0.05217024078456527, + 0.008168181581510694, + 0.12458107120475687, + 0.040131074724923166, + 0.09215418951150434, + 0.037076436397982956, + 0.23986591318152484, + 0.24834936397403087, + 0.07112240356146864, + 0.14756377597295253, + 0.13906460325256811, + 0.28183437612563766, + 0.06445770669491747, + 0.07929029014512225, + 0.18691920750910693, + 0.29047566635698585, + 0.06977353425954941, + 0.16985473722980285, + 0.11927894459182405, + 0.27554083471493135, + 0.2638704219191374, + 0.037698611273599074, + 0.08765672469307195, + 0.2551184026579383, + 0.04479248715799298, + 0.18833584946963758, + 0.05365328777366469, + 0.19010394082986073, + 0.17057472327614367, + 0.19413141789467478, + 0.012314385430265253, + 0.08976455885413014, + 0.25802764946762025, + 0.05217105920451346, + 0.10956852203854534, + 0.1829343883492156, + 0.15670689339315882, + 0.22449430898170175, + 0.05516095102663021, + 0.06761287286416509, + 0.09657006525640585, + 0.08201488338606042, + 0.21219708397847553, + 0.17182451111762792, + 0.22730980335481715, + 0.05179461275531549, + 0.06417155122782495, + 0.18632749593189948, + 0.14308697032718945, + 0.24563238948541416, + 0.30632640058443444, + 0.27809744271368386, + 0.09128200782344359, + 0.16947201717043245, + 0.14390543981104117, + 0.2812818281430726, + 0.2269864984466092, + 0.1576547927858872, + 0.1521525777582648, + 0.017345185505449626, + 0.014544298545731355, + 0.10100091554766766, + 0.12494558936862724, + 0.270705463474896, + 0.3114283085351552, + 0.14342124107828644, + 0.10867509021543283, + 0.2505549616315266, + 0.11979220445408388, + 0.1183436601614714, + 0.10597843646702096, + 0.28306519741260566, + 0.2025726666874207, + 0.26778050365271927, + 0.284737364413629, + 0.1848205640835622, + 0.28209034579135284, + 0.24076095811533585, + 0.07404124130587243, + 0.06859982320067719, + 0.05476439818438498, + 0.061984750961177296, + 0.09249907472740998, + 0.1582724038459138, + 0.2802185940450926, + 0.2310934193419602, + 0.0169486819283101, + 0.18889388320254208, + 0.04233677574523349, + 0.16291137991901686, + 0.08991673199695902, + 0.22851017728378395, + 0.03707762426888005, + 0.2477034868157516, + 0.31012170968338243, + 0.057547651381646386, + 0.06910938789937934, + 0.08943576062955265, + 0.10885126797690561, + 0.25989295132635337, + 0.06175157078637069, + 0.14466367160807347, + 0.012001254143065963, + 0.13697017256153382, + 0.1515447564164071, + 0.10354253440595829, + 0.13263016217843196, + 0.08339730322331182, + 0.092876941480302, + 0.0667980644784893, + 0.14922034940866544, + 0.12316702833971015, + 0.18739293749275732, + 0.14592582521223602, + 0.050402774792625026, + 0.2456764208073022, + 0.1464079400011995, + 0.17453892347876118, + 0.12115653843590997, + 0.2944426349386998, + 0.16992961015625008, + 0.06456888508329289, + 0.0889149448277325, + 0.06513967495625926, + 0.15733379676448592, + 0.15727456303035708, + 0.30255454591089376, + 0.022119538076550805, + 0.21024649906352574, + 0.15702855769858656, + 0.2531143263378646, + 0.04639587742158651, + 0.2868116519788101, + 0.28326204623095724, + 0.12050972760432808, + 0.26998529634942914, + 0.07311635191789931, + 0.1389173608322929, + 0.07576590116292836, + 0.2870659743909647, + 0.26439731398829286, + 0.28875167354843684, + 0.3119664191263936, + 0.04119013897407925, + 0.08774845705901865, + 0.13905230299111973, + 0.11585984592554271, + 0.24307520088506723, + 0.09362553170901208, + 0.25813285477762604, + 0.05542728024470627, + 0.1800892950396037, + 0.15718593904707162, + 0.14186427606694121, + 0.06407438043952352, + 0.2850908262332049, + 0.057155910792663064, + 0.22364675306050086, + 0.25620892266442946, + 0.06308374281672613, + 0.12245583695358699, + 0.2880770221527392, + 0.2539065582793193, + 0.23303860678855118, + 0.1860188233589474, + 0.15943830545543375, + 0.005612765836499478, + 0.09179254059500014, + 0.01989433534179809, + 0.21311567805774448, + 0.055084239263074285, + 0.06010704432208926, + 0.02125308128211427, + 0.19793964010282528, + 0.22669921297966836, + 0.16764449049056923, + 0.28636423995182014, + 0.16406179410012134, + 0.014417644866165669, + 0.29602470943556825, + 0.25736284318087577, + 0.2865546940614866, + 0.07241299840703161, + 0.18730160195824005, + 0.0983520098814089, + 0.27978405010478263, + 0.2363057870928036, + 0.028860436684587484, + 0.10893165769270723, + 0.12529520863588933, + 0.14285574814434635, + 0.17001103776622137, + 0.22909293443476303, + 0.16871481395459045, + 0.2844961529074517, + 0.14901140559947154, + 0.23952427287553713, + 0.10871315480648969, + 0.0835895452745341, + 0.1896080684997517, + 0.06289381063305763, + 0.28928643231810863, + 0.2775396024280474, + 0.06164220706332981, + 0.24104581553633497, + 0.040372109076121314, + 0.02338741139462028, + 0.02765464673872183, + 0.20067557682549572, + 0.07203073969847852, + 0.2722556655896279, + 0.2386291200689921, + 0.0869354514994288, + 0.1839993920185191, + 0.09629810136338722, + 0.19172187335675786, + 0.2297839260207359, + 0.1625634979567364, + 0.18363401437436785, + 0.19371720281284166, + 0.0624395655073948, + 0.056753070491058544, + 0.1484064221991734, + 0.3009468043738178, + 0.05472529333407213, + 0.010026456958008705, + 0.0644629073869422, + 0.28046106060444465, + 0.018937056813718593, + 0.15544510176434365, + 0.07217019476015314, + 0.13539142919109118, + 0.21379340440899824, + 0.1702622426575686, + 0.07147903910919663, + 0.12957217886184944, + 0.1666247953919825, + 0.05655184883643386, + 0.1900726483952778, + 0.12080857573162945, + 0.09663097500080756, + 0.1303349496256968, + 0.16424053652652132, + 0.157680780995639, + 0.07515297882560547, + 0.13858133406497183, + 0.26091977465432203, + 0.05801573806927941, + 0.31061437304955086, + 0.25874175785606374, + 0.11362959876821907, + 0.09281011285718187, + 0.3043812325840951, + 0.044370753140443, + 0.08476744239667537, + 0.2284746189179548, + 0.07039873649563973, + 0.16121212205431862, + 0.046546690121115016, + 0.2603353252277492, + 0.19952494711557345, + 0.08233339581767601, + 0.0666618708980124, + 0.04313051508780929, + 0.18315322973049025, + 0.038290413207342236, + 0.048529579826456816, + 0.25748117428559275, + 0.18432789731316926, + 0.1911195336218904, + 0.10312961438658656, + 0.10419684836845533, + 6.878943549733938E-4, + 0.12322319750640644, + 0.2787145269695932, + 0.14229223541554395, + 0.17142058960668216, + 0.28296360109941887, + 0.16028406803518444, + 0.2016589093548264, + 0.2185691404342069, + 0.21084122903730795, + 0.1739201014596444, + 0.30147535753121324, + 0.2361605186520935, + 0.23746404701726562, + 0.08041384029913029, + 0.3024720605394624, + 0.25974926463819875, + 0.13385231688214982, + 0.041807958144447044, + 0.08489833429540121, + 0.013253252947006565, + 0.16875113266839784, + 0.20551383153739847, + 0.3210968478180208, + 0.12248068787012983, + 0.1315956241597149, + 0.2022432087521108, + 0.046903508483207235, + 0.040690274943260614, + 0.11249258812354665, + 0.1613150501833823, + 0.07910211348402024, + 0.21514768591471484, + 0.15063500062137872, + 0.011436482234230261, + 0.1476130941227302, + 0.23208529162531108, + 0.1553150548036827, + 0.0745752152857773, + 0.1966642395982448, + 0.1840122141381398, + 0.04533920537143628, + 0.07389786273648326, + 0.18855889835891676, + 0.19104706530370946, + 0.30498190504825706, + 0.09728517636791645, + 0.15119024987701946, + 0.03309797110313541, + 0.08885910256450315, + 0.06869225504132587, + 0.21435441791967105, + 0.012120884335118482, + 0.20474913318999347, + 0.20787077850251853, + 0.04233837339243749, + 0.2759725958184817, + 0.004456926909421235, + 0.19426428085785785, + 0.04474721682800546, + 0.3110527015779766, + 0.27274458005402247, + 0.23216848617416602, + 0.21520558494996245, + 0.26011048186606023, + 0.26574370051204005, + 0.028700361129410604, + 0.08024350039708135, + 0.2694621611520205, + 0.14105813674628528, + 0.04469650140464048, + 0.21764987725764517, + 0.029436226254445592, + 0.120830017987284, + 0.07931813901190346, + 0.07979118985111497, + 0.21166153870076584, + 0.023075187168515615, + 0.10781665048627216, + 0.22225544936115135, + 0.12136633096687977, + 0.17734799839932436, + 0.1463504281804764, + 0.2618969140332372, + 0.29442152649365305, + 0.03875938207188401, + 0.1676285869951907, + 0.09123905895486757, + 0.31853783156471743, + 0.18198440871574612, + 0.2744447396481863, + 0.2763082265537312, + 0.12127467760006821, + 0.21405774743553818, + 0.26715231853199856, + 0.06473995107214833, + 0.09181133914753972, + 0.0192827321450764, + 0.2647432864726643, + 0.07539691689110647, + 0.2511019957716314, + 0.26420356427854524, + 0.164559178331794, + 0.25936198784519343, + 0.006008251069719346, + 0.09269213139446777, + 0.19363400976746423, + 0.08638592714661604, + 0.06074287201631729, + 0.13462113103004572, + 0.08673910854234358, + 0.009046009485896078, + 0.21172368958668, + 0.057168652829430976, + 0.21962709032565159, + 0.1124677754150115, + 0.08806798087217999, + 0.2418120996898827, + 0.1715148966319566, + 0.25347948992695046, + 0.11766007194844899, + 0.02478503668489332, + 0.29598321675642136, + 0.009777848409478946, + 0.23262637853128162, + 0.3154474305945269, + 0.2937866108722873, + 0.040335761348141264, + 0.0709138453449375, + 0.16320488889905005, + 0.1681089063368948, + 0.014710112394317153, + 0.08124140152056424, + 0.17570488670733933, + 0.2852231701145934, + 0.2520457485344845, + 0.05506251815314024, + 0.2566515252178652, + 0.23849399931058116, + 0.019914527296732147, + 0.089539080460643, + 0.0558520376985593, + 0.030893194148677375, + 0.12924650971932397, + 0.2766188911657455, + 0.22110134259749434, + 0.302340310722322, + 0.051460409931508265, + 0.23491416158881376, + 0.034643266708189915, + 0.28961036156722625, + 0.010734157141604327, + 0.16554292842982024, + 0.08098179581329118, + 0.29083340530123875, + 0.15024859303253238, + 0.2679770199096094, + 0.04754760685291781, + 0.01064231643640605, + 0.10855132648097973, + 0.2533969570348023, + 0.07015424528401548, + 0.09535422381671287, + 0.1855028467264692, + 0.029817915975498967, + 0.09368131935008177, + 0.024384268506193713, + 0.04736271612961317, + 0.019603246402633508, + 0.19811870503501885, + 0.158271003756756, + 0.12478639830441199, + 0.2704305090941256, + 0.11701252991786915, + 0.25686102618225276, + 0.0023586436905214322, + 0.26448799106442866, + 0.016422722459717938, + 0.005609572356114014, + 0.20024024176367375, + 0.11972706099973023, + 0.09106126485347386, + 0.30782351461856594, + 0.2868889734975145, + 0.1269794225807527, + 0.15013655510807894, + 0.058656807757214297, + 0.14032338269660424, + 0.07928016756189524, + 0.21225978011992405, + 0.015484619539704378, + 0.1899487436889696, + 0.2166419774172967, + 0.02262437549578951, + 0.2340424501723673, + 0.21136316163296368, + 0.3129493083802818, + 0.09553566562082266, + 0.026949454135069967, + 0.12030728113784753, + 0.20388895714822544, + 0.2009772071396901, + 0.08010477694465919, + 0.0035200372135009584, + 0.20069179850595123, + 0.14648921525202055, + 0.18137089335779089, + 0.043505817800930845, + 0.26162206966635493, + 0.14537681724240445, + 0.13156605075173358, + 0.2643622304968965, + 0.013033657203694277, + 0.07908781720564384, + 0.19366916164598175, + 0.03684012722714205, + 0.06998980710526537, + 0.10429634591967274, + 0.2354044589857911, + 0.30268837378421404, + 0.09374320595923501, + 0.17140679460120242, + 0.04338670932309578, + 0.13634656661281214, + 0.23600736107491993, + 0.013105374842983476, + 0.24021188739611585, + 0.10651700550941787, + 0.1909502201831947, + 0.15670781168429831, + 0.13962122979951913, + 0.30085441009880165, + 0.005423067916975437, + 0.27231761973768454, + 0.0033823489159892574, + 0.21137642206242935, + 0.23931811828320368, + 0.14741121481615402, + 0.26870982924821224, + 0.24845493229508528, + 0.23476192062562748, + 0.0411347002683363, + 0.11236347702980654, + 0.09744748096826493, + 0.28486876688006324, + 0.3185188875440203, + 0.027663775250103925, + 0.08056095844183303, + 0.2083980329167701, + 0.27747846285374794, + 0.0031100333192370447, + 0.22785963756046101, + 0.10467761623704319, + 0.25209534587629856, + 0.2605766912833886, + 0.1572995759985723, + 0.21748253975764475, + 0.09479836891263184, + 0.22668035725810398, + 0.15060141140223476, + 0.105767916509277, + 0.05629281077575179, + 0.07470796504524699, + 0.03456610436440543, + 0.16513173859484093, + 0.19503647605858754, + 0.26051437806442557, + 0.12679856102028497, + 0.16949203856384631, + 0.03394241160125979, + 0.2676731671495032, + 0.01739830172896302, + 0.18320988089091905, + 0.09764042538192724, + 0.073512739531846, + 0.1725737524133686, + 0.012865675720960935, + 0.07225052258372322, + 0.06286681180325605, + 0.08033670070526552, + 0.13244158567583422, + 0.012252387136824083, + 0.10346032428566239, + 0.043038880564915796, + 0.1361233920771905, + 0.22881023996425015, + 0.26635725702355023, + 0.019347530608091284, + 0.26812454691751186, + 0.13570245918156087, + 0.1133396119701106, + 0.11789619111881314, + 0.06663679489376075, + 0.08440278484694276, + 0.09279429971658641, + 0.16528907053762348, + 0.3231263163534197, + 0.21800434344081593, + 0.22242703652461868, + 0.13525083432630436, + 0.03573839882491076, + 0.08541329358762863, + 0.056326741536113924, + 0.027639223098813774, + 0.26924736931485127, + 0.15026053580192525, + 0.23029486062051002, + 0.29945462985722116, + 0.07981539295001433, + 0.287121812376841, + 0.18202050502159275, + 0.09524061867733055, + 0.01914375639863388, + 0.09407103001237933, + 0.03234485373808768, + 0.2668764815132888, + 0.13747345648321443, + 0.2779085313814282, + 0.12710704530143482, + 0.07906658552485675, + 0.08844285860756744, + 0.10749933394601573, + 0.26689765374270547, + 0.1675608185597545, + 0.18722762074296723, + 0.09198935171929194, + 0.1838821797194548, + 0.04679616027245693, + 0.27680801388721993, + 0.27253498398588555, + 0.019939435241194445, + 0.2723021064255231, + 0.012986314945504784, + 0.03423399993816921, + 0.10507421615825663, + 0.06135476100208841, + 0.2967114691273634, + 0.08406072822411448, + 0.12617259405056966, + 0.26419852850535996, + 0.126856502887811, + 0.2306887647348236, + 0.17731705917555202, + 0.06105191554295843, + 0.2277201263285725, + 0.0561585105693956, + 0.13531575927036743, + 0.12039016434287007, + 0.06869435261078545, + 0.006086044039618263, + 0.06173571550202768, + 0.09610810408484621, + 0.14508766042973284, + 0.17585339003258263, + 0.2782861605489981, + 0.17485411545094068, + 0.04883045539592729, + 0.08205601354734847, + 0.25400873204979013, + 0.2959046236440269, + 0.08196495168675544, + 0.26099319753419614, + 0.08463977524779298, + 0.013871130048640105, + 0.1834092440400771, + 0.12326338342377981, + 0.1829769184645282, + 0.020169800760894117, + 0.15691830436594748, + 0.07886715064024798, + 0.07791058623029719, + 0.12129863664718427, + 0.2004581687863168, + 0.24185176205079909, + 0.09351776159353177, + 0.3229768232659855, + 0.17847667959737284, + 0.08913978384852905, + 0.038040105773807384, + 0.17554403246475386, + 0.11724895594216041, + 0.27849378216611725, + 0.2896415303263999, + 0.0951583828337081, + 0.04748764565268596, + 0.12474206027163941, + 0.06954385310404156, + 0.2469482496152361, + 0.26520010450703524, + 0.24506107772687388, + 0.25945926116209367, + 0.004890414369085221, + 0.032940157910355525, + 0.2874382233206009, + 0.18324318774150383, + 0.016042625037773962, + 0.08522521406045316, + 0.2389796695871749, + 0.1938644654305161, + 0.16106900749549194, + 0.18084468491487313, + 0.2774268577484394, + 0.13080647464167233, + 0.17881350837701568, + 0.32379410489038923, + 0.007237835984648147, + 0.034337520218445876, + 0.04290847111918474, + 0.017110315288516177, + 0.07844883984898211, + 0.24903993298747015, + 0.2594396016059051, + 0.14317215351216594, + 0.07506261911543302, + 0.06025049671527401, + 0.2784286194684102, + 0.1290449883087207, + 0.08324548507718933, + 0.1707445472316085, + 0.1295538593625649, + 0.17264801211067723, + 0.133557766647656, + 0.1415497974360007, + 0.18281612908209155, + 0.04325905071974633, + 0.11448890618186688, + 0.21248169356145985, + 0.05355266064914738, + 0.13030425108449722, + 0.16500348924009037, + 0.26385193274457214, + 0.1739445518548748, + 0.15527203475376214, + 0.012154646021106831, + 0.07750740964988406, + 0.06316209321179309, + 0.15072565883813674, + 0.10411598530923609, + 0.18046183336908056, + 0.267603425060809, + 0.06683535294285128, + 0.019107885962069145, + 0.01601776460257786, + 0.1358544219910166, + 0.04098232269481165, + 0.020464348890613628, + 0.25956823118884215, + 0.16622165787512583, + 0.30063793153589113, + 0.2542268955010146, + 0.3007890934030086, + 0.28509168236947785, + 0.1388197976363875, + 0.19470406778880253, + 0.12132472606262523, + 0.2810737578761821, + 0.1216225308343109, + 0.027793264696759776, + 0.2563160405230134, + 0.2505947060677133, + 0.10048441531045549, + 0.049423313326498894, + 0.0471516363860733, + 0.05268865979734355, + 0.2667214655164066, + 0.20501946679508395, + 0.09594417385671644, + 0.11488599396482022, + 0.13051806886487202, + 0.16795343017691855, + 0.004326883478969674, + 0.16157046203946365, + 0.060056805543070975, + 0.07129861502966714, + 0.14912494552650482, + 0.07421921174179723, + 0.10060223247289947, + 0.034401856368640356, + 0.07406427456211762, + 0.17423470702502078, + 0.010542277752143059, + 0.0035375126511588825, + 0.038762201663979576, + 0.22699679721535912, + 0.23263855020702556, + 0.19036291527276383, + 0.11588941973261233, + 0.03622511552090539, + 0.16120270059219766, + 0.16098524808510414, + 0.021625978037522656, + 0.049848343454194144, + 0.14685978864019691, + 0.04950904556189122, + 0.2919583814543811, + 0.2043669709819495, + 0.13358822401346437, + 0.10026884225662416, + 0.21359739658010457, + 0.23800750056235867, + 0.08272889416443441, + 0.22280693929316528, + 0.2004373877416652, + 0.14544334606701378, + 0.156528115921887, + 0.1166957421861834, + 0.2291258326602174, + 0.007799713678795769, + 0.3084638862527371, + 0.08025049584428681, + 0.14650913568813173, + 0.060727140412687515, + 0.041538466386100745, + 0.10920759680140481, + 0.22933789872141436, + 0.0415273379527035, + 0.01744885381630706, + 0.19625860373643442, + 0.2779260752064068, + 0.19618732296151362, + 0.14584997292374496, + 0.29099705014720634, + 0.2573374242960751, + 0.172057767887375, + 0.12106736617213971, + 0.02950693398610937, + 0.2284182580257074, + 0.029918306393012673, + 0.05986473259650994, + 0.1795664753757983, + 0.05630619119841054, + 0.3010521480289277, + 0.015039133056528582, + 0.15856312637595152, + 0.06612254319126981, + 0.020238492521910074, + 0.19904421080836654, + 0.1252994880635412, + 0.17016207616194545, + 0.28247592937310895, + 0.08054480663904255, + 0.15811085309831913, + 0.052212597841361404, + 0.262153778590849, + 0.24778291010733003, + 0.14600981865512558, + 0.2566534772749161, + 0.0940165765646458, + 0.18984343463836348, + 0.09717602566891502, + 0.15221795928268111, + 0.0662600620022854, + 0.11026013195541869, + 0.09127234344828768, + 0.07992633333106991, + 0.07283550233421454, + 0.10422300391982267, + 0.28601084816390604, + 0.08045256574978886, + 0.07335577278352767, + 0.1919085156439959, + 0.03788400603864854, + 0.21494824108432684, + 0.015743866353177954, + 0.008791717632443418, + 0.2048432009288833, + 0.057971645168096116, + 0.2625079774826456, + 0.25390203293401936, + 0.21600677601543058, + 0.19628823710909335, + 0.07081838823624653, + 0.08920642194014844, + 0.1770145337307182, + 0.2508876229093182, + 0.0681762948469317, + 0.13433707599204547, + 0.3151470792496528, + 0.1623219160711135, + 0.12936503256036738, + 0.11725548595618106, + 0.18523183946160823, + 0.14185941129187218, + 0.23783745177732388, + 0.21352369706325927, + 0.0392600945029365, + 0.2582297016658002, + 0.12294091871724089, + 0.10827543764000323, + 0.2173859177250226, + 0.10726970783137078, + 0.22933708973509798, + 0.1087262562577601, + 0.3184782303183177, + 0.26698644063190613, + 0.10800483158431681, + 0.2159993088883378, + 0.1393302401886606, + 0.1289186187395799, + 0.06509896302083082, + 0.10814289503647917, + 0.2586969802865805, + 0.03346537596142192, + 0.12537238744982832, + 0.10524907260936987, + 0.011083585439828916, + 0.13124828651894482, + 0.2624242238397329, + 0.23439509676925116, + 0.18095193549927358, + 0.14808119542896703, + 0.12937268539495328, + 0.2916558766444828, + 0.23932732954907782, + 0.12494561856156963, + 0.21900016961344146, + 0.09341093963549822, + 0.040638738578767736, + 0.28536324838505, + 0.2520209791179764, + 0.18195446211934815, + 0.12817207641947959, + 0.21453983623362413, + 0.16116778455186168, + 0.17836902642597113, + 0.1974389551763164, + 0.08710079125401782, + 0.1966320421376524, + 0.01522886688801002, + 0.045703972435429605, + 0.21664262793482394, + 0.050295929118717095, + 0.1440920835564822, + 0.10817756649447448, + 0.21970221153666683, + 0.19201659317909225, + 0.03291772362165671, + 0.019267825002806993, + 0.10689858066191024, + 0.1267287832888889, + 0.0759280593840592, + 0.026805557615881583, + 0.07819148122493784, + 0.26893653826647645, + 0.05162611074851631, + 0.17015389584343613, + 0.28402248148912324, + 0.04278870253837794, + 0.3041911982339415, + 0.0388623177896374, + 0.13004006501375712, + 0.08327979322432652, + 0.18430970777046504, + 0.037825594400210036, + 0.039521229218840666, + 0.04082101979539533, + 0.018378206922577904, + 0.1169942201917526, + 0.20214261761502214, + 0.05012272391573885, + 0.04201861860453182, + 0.2851375202926841, + 0.05604793428521345, + 0.2589842824820623, + 0.024327177618824497, + 0.31676941957700777, + 0.2794655024634765, + 0.05038761871411391, + 0.28005770659753476, + 0.2664560455201984, + 0.2602583235829368, + 0.12264129634101152, + 0.04892579114113519, + 0.031254787822172184, + 0.27951694564759205, + 0.148657650534062, + 0.0836690143572187, + 0.16744429337007388, + 0.19873372370421816, + 0.2523132460838398, + 0.2215047113474611, + 0.23124189447140292, + 0.1687229832811503, + 0.2856976041791215, + 0.25940237728539683, + 0.12819946814829888, + 0.04583556939213675, + 0.23974527102844925, + 0.2186249503083089, + 0.049576143144602895, + 0.13657289875725867, + 0.24929882242209517, + 0.09670670145253522, + 0.2479487356718115, + 0.05775315585891035, + 0.12460053204184302, + 0.08685758888684036, + 0.2397362801837297, + 0.19903021135657115, + 0.01747644281352202, + 0.20111221329491413, + 0.14300360221748964, + 0.07428060243009309, + 0.2729794455259552, + 0.1469152276974097, + 0.18584885302312265, + 0.22967093436237768, + 0.21805284944288314, + 0.28292806931490877, + 0.30596481256637575, + 0.08288119891277287, + 0.014774765456531273, + 0.0706859612309871, + 0.2329566330752741, + 0.26207939040798145, + 0.00662190615605111, + 0.11134708770707465, + 0.023598791155653553, + 0.1115195839667207, + 0.03504901543255403, + 0.16407681469276936, + 0.03226181484938101, + 0.23344535223344234, + 0.10208079603196488, + 0.26189276632657726, + 0.11536918670512976, + 0.0200002818972866, + 0.2807433995613068, + 0.1389541934843479, + 0.2641622422440206, + 0.1520810367488046, + 0.27508723492010756, + 0.13187107937915585, + 0.08749828600369122, + 0.11186003502208638, + 0.16661066986630668, + 0.23634389645920112, + 0.14086786265152323, + 0.2083714388274246, + 0.2180017707330216, + 0.04579850969954948, + 0.08364570617793059, + 0.062437356410157734, + 0.13344229746672073, + 0.28728637143877417, + 0.21866126156585003, + 0.2730342695782791, + 0.1643550986852482, + 0.3012025548039374, + 0.13959548549813502, + 0.2462317393218925, + 0.06202812147528391, + 0.00770685105763856, + 0.0506688976198487, + 0.2467621788653706, + 0.08185700829887349, + 0.04030008239576575, + 0.09124855030270203, + 0.14220882671963028, + 0.1503224674188733, + 0.1069994466058465, + 0.06332713226078991, + 0.30392084978862693, + 0.25036512550627354, + 0.030683269721877262, + 0.24579364611252608, + 0.20914904417532296, + 0.022497026131098167, + 0.19353200112017188, + 0.08440594820212621, + 0.003140463124821306, + 0.25436297026482113, + 0.22274007651627412, + 0.2694128260558258, + 0.1743619415747088, + 0.08005243644737252, + 0.3138628665581115, + 0.14319588255777843, + 0.08894098559588758, + 0.10374042801303629, + 0.2454800742128148, + 0.2747945927200944, + 0.07901951971254817, + 0.046306823344341955, + 0.02018528187073139, + 0.2104919487152605, + 0.026986728323210474, + 0.17410678562141005, + 0.18454213560280797, + 0.14837566649175313, + 0.27780278564129807, + 0.047875234506425356, + 0.18441432441084663, + 0.3207033688657823, + 0.18575828488232943, + 0.03839228083927504, + 0.10238868944617271, + 0.011765314755276804, + 0.15660019328391708, + 0.19811483956399087, + 0.25765893902155584, + 0.2739017721127224, + 0.13566082199362672, + 0.2816721936136623, + 0.26783659045182523, + 0.0287143467798471, + 0.1954307361398289, + 0.1958667509459525, + 0.24738422785810926, + 0.05006035596981205, + 0.16034662455161405, + 0.09371554717668053, + 0.14100821274549177, + 0.09575061073001473, + 0.06798411945625837, + 0.13049400046004966, + 0.30862578667860424, + 0.03609402771514361, + 0.2739088144767002, + 0.04608329773353352, + 0.042686818946115486, + 0.05696473284565965, + 0.23540046123671418, + 0.25620089528768925, + 0.1251146583885655, + 0.28138855977057786, + 0.06832906789177152, + 0.15587644531210246, + 0.04420002778647306, + 0.14011005580195157, + 0.11150062415518378, + 0.1853113164827464, + 0.224108817587809, + 0.03643902581205899, + 0.30568952851067305, + 0.22795147245173356, + 0.05202322590303519, + 0.010913756560556244, + 0.056821152852864036, + 0.044096599064469895, + 0.11460831275441637, + 0.20865589262540757, + 0.2441443640592249, + 0.2917184108232406, + 0.10134730427410259, + 0.12294012933672238, + 0.028336363233584416, + 0.11389891087754633, + 0.08903428813930264, + 0.19788962566587623, + 0.13685866733599752, + 0.2836322579223263, + 0.18451422666568176, + 0.019713887961990625, + 0.0492656862155773, + 0.1974989594877588, + 0.1092608751464925, + 0.15633849585428752, + 0.1568875351958891, + 0.06262130810557232, + 0.259277594273429, + 0.31381541337436486, + 0.19921914049234735, + 0.10666797655012344, + 0.28539669388699285, + 0.31339679472890103, + 0.3227180433648511, + 0.19405117585231257, + 0.06433821031385688, + 0.16605644670533973, + 0.20920851765073004, + 0.1449468169402153, + 0.17392400541720945, + 0.32384239988251357, + 0.0956429739175776, + 0.26437579770931924, + 0.05281214970182415, + 0.13228756559424557, + 0.3045909282346713, + 0.015014971501927278, + 0.25238919941820215, + 0.043987964387830814, + 0.13335600993542876, + 0.10008466827397323, + 0.007904739308362944, + 0.10114749307426593, + 0.13195162732898996, + 0.06763855436029587, + 0.07759225247701726, + 0.018020655124385058, + 0.31742864129233594, + 0.05526713822640674, + 0.1510130097786693, + 0.14541969489563475, + 0.1762137783187799, + 0.06532682242724643, + 0.11620699032933128, + 0.19101502455853617, + 0.13608437074797217, + 0.20283034142969342, + 0.13416399243270588, + 0.037377534787980185, + 0.1511198623401761, + 0.2963593037021726, + 0.03142653787748108, + 0.30382684053423886, + 0.1856385015142021, + 0.26646829785685316, + 0.07055603455920727, + 0.24301388929022133, + 0.03528980908347865, + 0.06669309825028118, + 0.07377296086232232, + 0.05709374318815286, + 0.26258633372324464, + 0.0678048710899244, + 0.271148658765319, + 0.16706747972848499, + 0.10643443255943018, + 0.02202957077994246, + 0.0113133885760095, + 0.11522674313699383, + 0.2541742329614886, + 0.11644351714498472, + 0.26033820062379487, + 0.27844581901086757, + 0.21658854129371177, + 0.23476613879239483, + 0.07569674083299462, + 0.2869867299971129, + 0.08911024221206104, + 0.06992850593143003, + 0.22486169824682606, + 0.11002156634190706, + 0.17389914942220036, + 0.1392527169312095, + 0.18056943861981456, + 0.2809572418386304, + 0.14605301342802873, + 0.04548791090307977, + 0.2021732781447896, + 0.0523021515541227, + 0.19941762789191556, + 0.025839779825950066, + 0.02386151092723476, + 0.1501050610345071, + 0.2879576165760482, + 0.07455794052089793, + 0.248006061491653, + 0.061868513406987534, + 0.1092869792257687, + 0.2951190747414865, + 0.008723550723090539, + 0.15439138478670156, + 0.0992835102768211, + 0.20008144322773752, + 0.09089083951116504, + 0.279963295575963, + 0.2963345488002846, + 0.017474794029057494, + 0.23683912839976595, + 0.2710584538981511, + 0.3005735057463336, + 0.2166742082370282, + 0.08096114507004608, + 0.007588023758473338, + 0.3212959741510208, + 0.08859510373624124, + 0.280777678491844, + 0.2741575067406154, + 0.2983781979072928, + 0.010555147834683271, + 0.10811702887468938, + 0.15340761748755935, + 0.12250479248104106, + 0.051255065690903136, + 0.21772762949445246, + 0.15768951062974748, + 0.07956225453042765, + 0.31067929808310346, + 0.21922166773917337, + 0.0695963282251502, + 0.0841455954859209, + 0.27718917153390643, + 0.1693800673456462, + 0.10838554966930584, + 0.0599063911548958, + 0.21783918750461093, + 0.11602125661966613, + 0.1111735990284887, + 0.0687958363279993, + 0.18131278535409798, + 0.0854471697591065, + 0.0988464302712859, + 0.04827567519656401, + 0.01826297516498391, + 0.2878377996553523, + 0.10616558930540826, + 0.18678083542953783, + 0.3055312466400548, + 0.1463449081227671, + 0.05926409815507347, + 0.3034284976780731, + 0.13552928149987695, + 0.22304192849506949, + 0.16221400372960565, + 0.273441427246133, + 0.1357979625566973, + 0.00646267577288305, + 0.012129484959892918, + 0.17675650071680218, + 0.21437005716781274, + 0.2305842228467256, + 0.0663523644055097, + 0.02112321381779374, + 0.2609820699541133, + 0.21060651077049614, + 0.22524858511613594, + 0.08477631406355055, + 0.0965716027079768, + 0.0788654164413753, + 0.30608899681219837, + 0.0777512608528036, + 0.06493706781415459, + 0.08017014839730971, + 0.13131726151597276, + 0.02769776717849074, + 0.23378707147299327, + 0.28456001929053143, + 0.2254227164018312, + 0.18824362900618014, + 0.08414593352644317, + 0.09945465540984919, + 0.29254270888586525, + 0.26692605570841965, + 0.3088045231345376, + 0.09250412528079545, + 0.11231581257334611, + 0.01688287418140138, + 0.10147467842316955, + 0.10715737909053377, + 0.2765319863302336, + 0.18111240421901992, + 0.24951463758615733, + 0.11292260963870117, + 0.15201512900454797, + 0.23737134088688355, + 0.2970638562996334, + 0.24968784375014808, + 0.12410418667406663, + 0.21487280640812362, + 0.25538644957922757, + 0.15409271991135393, + 0.24210436625432633, + 0.3043173778497105, + 0.24165492426401422, + 0.21805570808419797, + 0.27062888910248106, + 0.1540902680073873, + 0.26991601894686895, + 0.12947799875508914, + 0.17195326933814917, + 0.06561877333306596, + 0.059269615686156844, + 0.25303161424138926, + 0.20962178436093082, + 0.14931304244578386, + 0.09821066872027019, + 0.10240629989147755, + 0.014636097446205826, + 0.1211995892572228, + 0.14967658972256082, + 0.005889870871037451, + 0.19242987110924686, + 0.2904426129665113, + 0.11509084526943135, + 0.13706749069642157, + 0.03111079020249485, + 0.09156328154272679, + 0.16415529063676126, + 0.31132294524331156, + 0.1804265875012563, + 0.2582354337649134, + 0.03371324249290835, + 0.15660788271687234, + 0.07992234115888792, + 0.24738464087583542, + 0.20591738681511718, + 0.22582331734652067, + 0.015466442866601038, + 0.19887910294775105, + 0.1753234696784616, + 0.21696948373693736, + 0.20284976960275855, + 0.1851084854272286, + 0.2750796965901694, + 0.11972241838755153, + 0.19050598344412892, + 0.06021696352049316, + 0.024510335110259008, + 0.24632712985603591, + 0.1982319601182395, + 0.03874633810096579, + 0.1137600058031298, + 0.15290282949132605, + 0.0932776261693346, + 0.2924899701652006, + 0.28163782857048236, + 0.18118411168227697, + 0.23932863145060324, + 0.28346416527548346, + 0.015953344732775883, + 0.17374314249137066, + 0.11426239302279419, + 0.054095528031851865, + 0.022716640323681977, + 0.18589243623035387, + 0.09779565221621747, + 0.19544153935354638, + 0.08557997990278364, + 0.1386625671460921, + 0.2500841891442262, + 0.05331359297217607, + 0.009057236929040223, + 0.1520278349867288, + 0.02400846186980959, + 0.08434213044779185, + 0.07674340918929816, + 0.2426367518068753, + 0.1293589303095615, + 0.2075985063239719, + 0.10016094024467055, + 0.03342162067948957, + 0.06145236704854368, + 0.07955283830568986, + 0.1838604873802597, + 0.17420031163609084, + 0.0077898336485594894, + 0.08600720545161422, + 0.22418192269554713, + 0.09655285101041451, + 0.22463071233783488, + 0.30748349879838255, + 0.20825880369501445, + 0.11040858862928488, + 0.13558903614397647, + 0.07787961544660307, + 0.09131169775117551, + 0.1770165071452904, + 0.09376555913309959, + 0.14389888090091796, + 0.09667064098752862, + 0.3032018077069834, + 0.16871869496798098, + 0.3059664068640524, + 0.18099989383793907, + 0.05656870140624004, + 0.01010638755204864, + 0.035177744277187346, + 0.14717959819031343, + 0.10816349795262703, + 0.07385481758196014, + 0.014966021045173741, + 0.16455606111860782, + 0.06583698559782059, + 0.2402366860993762, + 0.21448090954685106, + 0.08861067550622198, + 0.04929806088788683, + 0.19040756149100455, + 0.02785489945373499, + 0.24497428741093089, + 0.23294931460898807, + 0.10061409733993747, + 0.15847009377941346, + 0.2970371186895077, + 0.1994856021779031, + 0.2657552964953019, + 0.16256669313338418, + 0.22315059633690898, + 0.18726515308972522, + 0.23546338379452764, + 0.015711687370783222, + 0.059601107393011304, + 0.23217294659220325, + 0.0366684198115524, + 0.18679325483066672, + 0.25623174789464886, + 0.24941707264308385, + 0.0912236290102279, + 0.28426638729235276, + 0.07371286618607631, + 0.23360876800717506, + 0.11543470448915827, + 0.06956502387572198, + 0.04626202083674618, + 0.2839948609964122, + 0.10493211041836778, + 0.2914691672991703, + 0.2460689578044049, + 0.03102150930308726, + 0.18197579730914049, + 0.05469560169472085, + 0.06701108963342792, + 0.15492325921187095, + 0.0768432666020462, + 0.08279078448572888, + 0.17133247160136514, + 0.0575693157900172, + 0.014844788357957784, + 0.22322215602776202, + 0.27801198863682175, + 0.3026258876078206, + 0.07053793202359517, + 0.14121937337456608, + 0.018131536353108064, + 0.31834070932408776, + 0.050344439791055934, + 0.24361340699392656, + 0.1124074933523163, + 0.21643352041959932, + 0.29094999413077727, + 0.13268140157866387, + 0.2615018310188922, + 0.11897170517543319, + 0.11637076248939736, + 0.0635533822344316, + 0.2343820581266395, + 0.1241247876309141, + 0.2923159973001698, + 0.12468670560585222, + 0.23535607504638464, + 0.12652749410959716, + 0.19639128918510992, + 0.2415576613596178, + 0.09604707058376027, + 0.28750764180437866, + 0.24919591544474512, + 0.274778227098305, + 0.2374325225438439, + 0.04026561403649194, + 0.30851987252199525, + 0.2539326614123119, + 0.22240336708649686, + 0.06308085231933079, + 0.29691304824544335, + 0.012924245331227907, + 0.13357263345599762, + 0.09127224211132522, + 0.1266870065762547, + 0.012317956530270189, + 0.2959606000341796, + 0.10529457211718106, + 0.1633647269018937, + 0.07753950010356818, + 0.04601490267012351, + 0.16832088271177892, + 0.11306601044796183, + 0.035752176180569355, + 0.20018458853477847, + 0.10357599631968964, + 0.059203269755036585, + 0.09755562175052834, + 0.0118669969695027, + 0.20409757576300083, + 0.14146255089478577, + 0.09844307356305221, + 0.27664125197319683, + 0.14629027399203542, + 0.044800849945163077, + 0.10721413687798743, + 0.032917038774235054, + 0.30817117531304794, + 0.02342674750367045, + 0.0778049896806776, + 0.23090805824277394, + 0.27274279162753634, + 0.30725766535893934, + 0.04474933375044851, + 0.0975122217369741, + 0.20114385552779196, + 0.08075410891280169, + 0.1267805230428327, + 0.15253364523496202, + 0.2193612063668295, + 0.185147775583987, + 0.2579746378868788, + 0.17799175066867035, + 0.15924699072104195, + 0.1346365129110876, + 0.2662571154541173, + 0.18360844758799444, + 0.030271387514711895, + 0.09431224010006911, + 0.10629135881078418, + 0.09067163765497888, + 0.2698491886267719, + 0.1074381074175823, + 0.26901654100619005, + 0.13904602997913457, + 0.020635172590878284, + 0.0012030053737768732, + 0.035326718538929415, + 0.157088687295661, + 0.019194151007662474, + 0.15817675241928897, + 0.24161034311240853, + 0.05983804716684733, + 0.307518943991126, + 0.30764784573421106, + 0.12181377779438138, + 0.19499883093156298, + 0.27862342731985723, + 0.24148567228040838, + 0.014385438494390815, + 0.10830123123638587, + 0.25323160030991376, + 0.2578540647809833, + 0.12259439536663229, + 0.19480174425040497, + 0.2586908662186438, + 0.03217724113962828, + 0.06457665020495006, + 0.20197560472470436, + 0.276747976279015, + 0.22861803383411788, + 0.1278025596392696, + 0.10628811836460192, + 0.0596580711389709, + 0.19667168516840516, + 0.14475075567298434, + 0.1780651552662241, + 0.2134776635206307, + 0.06410633060614045, + 0.03126326736444316, + 0.13048188108623396, + 0.05831233204496781, + 0.2162557831608072, + 0.029990481747231006, + 0.061476385390187245, + 0.28184967450631043, + 0.1605458960164334, + 0.042062046758536094, + 0.30807701105561863, + 0.03481683232569585, + 0.1650526596636246, + 0.22194739333525343, + 0.12095212220425061, + 0.30451298816687794, + 0.06351120345796944, + 0.1866371519392235, + 0.027142328810145326, + 0.2121181590866515, + 0.16745697661697004, + 0.2575704756297839, + 0.21602666776410473, + 0.11096922127925404, + 0.16793133143408034, + 0.14861730240975185, + 0.05023850549870651, + 0.05060874074247244, + 0.08720595548273757, + 0.017594139705375447, + 0.3025998625695838, + 0.10520566811590722, + 0.09108578504687391, + 0.06868085902022232, + 0.23122366846244577, + 0.059366778735689775, + 0.26959725980577665, + 0.02889491198603959, + 0.13763521926764447, + 0.3034231478153148, + 0.11869833845630993, + 0.10690830965597924, + 0.2546975936456455, + 0.11520575474812818, + 0.010427260019763478, + 0.12906618264537287, + 0.038462561157925346, + 0.2536188535112179, + 0.02270241191818071, + 0.2852247521638583, + 0.046928088419171114, + 0.055777648966237374, + 0.056573905343925215, + 0.2754356543842008, + 0.06405834058195387, + 0.17540203280651656, + 0.0642460115649518, + 0.10736490430816187, + 0.043233843869353986, + 0.2821368233651277, + 0.23229871299576155, + 0.23737565056402948, + 0.11714186089487479, + 0.2643305101023996, + 0.2563470888275016, + 0.14005609062442637, + 0.22355016098941388, + 0.0403065091330471, + 0.14944468648824388, + 0.22568855898587664, + 0.3126794685647815, + 0.2105186492245128, + 0.08251454534698092, + 0.03263443827633579, + 0.14817827998980812, + 0.002125566377687852, + 0.21284353388929653, + 0.015996169180001532, + 0.1766822617580179, + 0.05900500519080943, + 0.042336416541452045, + 0.017204302750339066, + 0.20121923451011695, + 0.1793412163994307, + 0.2481899365865573, + 0.11345678336058308, + 0.3174987798949667, + 0.2623642550694098, + 0.01835930402370236, + 0.14349860508681933, + 0.1448918024639299, + 0.18439529894665324, + 0.04166884364972409, + 0.17161796484485142, + 0.17309786296333793, + 0.22147533409129258, + 0.1563625464348293, + 0.12980739170248665, + 0.05540608026367823, + 0.006891317072621018, + 0.23571018275978264, + 0.32143709964127837, + 0.21731384880167076, + 0.02024260525840962, + 0.024912778757500833, + 0.20570015264662497, + 0.23217768244711132, + 0.14558384697334134, + 0.2936573700550818, + 0.11010312574112172, + 0.2794041732167157, + 0.09997040582015607, + 0.14146770550069337, + 0.14949017500071468, + 0.25959116315753167, + 0.17017685203916486, + 0.2582180312790977, + 0.2607511504308378, + 0.1940459641802936, + 0.034401506259649266, + 0.17745625633033207, + 0.2103742118347415, + 0.09271008332512337, + 0.23277207353139545, + 0.035406593318874274, + 0.1922682727127224, + 0.00851129908845363, + 0.08326834193552975, + 0.27742042688606655, + 0.03319004108163855, + 0.11457311995357725, + 0.10750274577715777, + 0.09092483521499958, + 0.10687658962394483, + 0.05468273310517307, + 0.021720167161855097, + 0.04725070964449167, + 0.07205162752298291, + 0.09140540276131902, + 0.11361126025668791, + 0.3069313293967986, + 0.19809724117803476, + 0.21009726610712354, + 0.06828009500759896, + 0.2675215142598872, + 0.1705002399274131, + 0.31650288196562415, + 0.08033909376665496, + 0.27234134216613654, + 0.26689158395685403, + 0.15868824357716277, + 0.07322111764843202, + 0.29820826741389206, + 0.04126253876680423, + 0.14400523452028255, + 0.0047972160876476695, + 0.25475805715493294, + 0.31120672156599616, + 0.18226117659501004, + 0.11711566817476596, + 0.22775717516153865, + 0.03757292397809907, + 0.02012320950490989, + 0.19214091609382802, + 0.14029110720932395, + 0.06691957409664359, + 0.2639758814179168, + 0.208147824259082, + 0.02140034867715702, + 0.11039854442651958, + 0.21059596377293238, + 0.02965112501298849, + 0.07979100080083942, + 0.15808295161644859, + 0.2105934945573907, + 0.15698240342802258, + 0.2476094411467324, + 0.13476370037427593, + 0.13125243597265648, + 0.21008156815759127, + 0.02364246515558471, + 0.023917976219436372, + 0.09206620076250302, + 0.15154147526645032, + 0.035362091540294696, + 0.08346407677642166, + 0.2085069997184432, + 0.2687580700965404, + 0.03893853914272468, + 0.06877718337994787, + 0.004317475905587865, + 0.2768870360448832, + 0.15833931576908747, + 0.2749835314336819, + 0.09557135977579682, + 0.16709337121119885, + 0.20661166656638766, + 0.11096402404294416, + 0.028324266273224506, + 0.19990358795998392, + 0.002625163399267099, + 0.20326387844769622, + 0.21629277341319328, + 0.20519533842968196, + 0.30515196698965363, + 0.216750536125592, + 0.055081270772431565, + 0.0919390900848464, + 0.12436830095923553, + 0.10950322459447448, + 0.22087220628904516, + 0.06911193016344762, + 0.05875600813734538, + 0.043405979228010046, + 0.028875939298918588, + 0.20728115620391996, + 0.0664889926066232, + 0.1954130218917373, + 0.04931841837569984, + 0.166985112650432, + 0.19527859980923004, + 0.218016999472748, + 0.09009570346502702, + 0.15065025484271174, + 0.28595766751122453, + 0.272437969259055, + 0.3139397696172959, + 0.03158120946619017, + 0.013723392542419183, + 0.060371107575977176, + 0.04065652165216404, + 0.24662719029456853, + 0.2697790936871906, + 0.2812567512289653, + 0.13935379242120285, + 0.07179330136533568, + 0.2521599343685908, + 0.11694633602728224, + 0.015689289768155968, + 0.23825255765165645, + 0.1400965993405384, + 0.058487193220690334, + 0.19782084941763778, + 0.30514739826859094, + 0.13778516310626054, + 0.06260611196470736, + 0.27587660364541877, + 0.09193822617623665, + 0.1489556435244977, + 0.06550718386266008, + 0.22622531105441707, + 0.29842166152319854, + 0.07674206340979263, + 0.04935678547455577, + 0.18827161373547946, + 0.004726176869760197, + 0.10599999374555992, + 0.24079919993209611, + 0.11877337943731849, + 0.011074860679057351, + 0.1256507342733128, + 0.23745010856366502, + 0.21497570589620296, + 0.1777074486351679, + 0.2778289094936174, + 0.319163151658687, + 0.04671906811841161, + 0.24532406803528015, + 0.009918613350459717, + 0.12705502090412077, + 0.0895670772390444, + 0.27964857207906063, + 0.24951031700613124, + 0.28833047891837715, + 0.08132725984423979, + 0.21861553867456085, + 0.05026015486824147, + 0.0954008128333171, + 0.09988933988390353, + 0.2002740548697938, + 0.07738584614085757, + 0.03694444612827588, + 0.20146199179416463, + 0.0862156283627414, + 0.261590725359016, + 0.08631882051231554, + 0.22390871992967865, + 0.10887489684979171, + 0.0032541425234557646, + 0.19252587204636554, + 0.1332047921987199, + 0.27935258547189196, + 0.29425964681115957, + 0.3223664269930873, + 0.05847227363667512, + 0.07970583532816639, + 0.24254586731851477, + 0.12651951492459781, + 0.2525508002808903, + 0.06944064657529418, + 0.10393722849391958, + 0.17872043677659782, + 0.0174799829257536, + 0.2825469481104415, + 0.10991066383516579, + 0.14148694467301756, + 0.018703623911508763, + 0.03197018296068721, + 0.30532660205194856, + 0.03131187576319525, + 0.21616158105412814, + 0.18769999032462586, + 0.11129237993609466, + 0.21521905516268222, + 0.19827996839402615, + 0.10141338791547412, + 0.2643867104653616, + 0.1094980990839153, + 0.04243724859037626, + 0.11908474709939319, + 0.04891691829051669, + 0.17349408308143835, + 0.16438193927979386, + 0.16516734409990863, + 0.0941750566809898, + 0.15361741057560663, + 0.07283988515734226, + 0.1250241221868541, + 0.056680920051566, + 0.08666264912732262, + 0.15511978958084324, + 0.32325963779949524, + 0.2975333407446941, + 0.03463240656920151, + 0.2195935784535235, + 0.24900494679491422, + 0.1392699240186077, + 0.07159144366069907, + 0.15851595252555398, + 0.2206257205122031, + 0.17353256304156556, + 0.010466896845686609, + 0.08654200604460417, + 0.06707563539770305, + 0.22298217027019052, + 0.06300363724026181, + 0.24994935948933517, + 0.19676793225165268, + 0.1770037999542928, + 0.15618801661063209, + 0.11976318005089398, + 0.15661557950747268, + 0.2733918862871629, + 0.09578796332534645, + 0.05434168447315235, + 0.04134456174545046, + 0.2100305473688497, + 0.07422354129177207, + 0.09024569069877596, + 0.06802562528183602, + 0.20114208254131744, + 0.05396663687478327, + 0.2111185218936651, + 0.2965659022630742, + 0.26592795992934815, + 0.056976809212110624, + 0.10534213045395595, + 0.04554946073272281, + 0.17530782478013615, + 0.22311706069860568, + 0.033106328202969305, + 0.1500022087793055, + 0.1627454693359542, + 0.13027911910055226, + 0.15837835587302335, + 0.16623268688690518, + 0.09296233762215475, + 0.25826878548891674, + 0.07072675438103883, + 0.31467680944667364, + 0.2622532040308649, + 0.059878883402762144, + 0.0694028318249895, + 0.13988692911609743, + 0.23898483019234842, + 0.2968057924795872, + 0.022408290658250913, + 0.10155785743511796, + 0.209097077553315, + 0.053622246990535374, + 0.023098568790740716, + 0.2140901945843001, + 0.11349253648556024, + 0.06990067244716139, + 0.32108799784174236, + 0.07665648735189717, + 0.22207497419406486, + 0.2588596049895245, + 0.16734446924934993, + 0.10036397705228874, + 0.1707684305426654, + 0.1759863169110055, + 0.2164804013408232, + 0.27983298319689376, + 0.2594341836696699, + 0.0033549228933689476, + 0.13071345663369877, + 0.16099115971136171, + 0.23482682447971992, + 0.0701368556619368, + 0.21319788169752757, + 0.13565264243398376, + 0.28085281053128874, + 0.22688446783275135, + 0.1433963065600874, + 0.23869633826775916, + 0.24661733676194303, + 0.06683408198399833, + 0.32212686501511195, + 0.155283278792899, + 0.05418324087558911, + 0.04925360594595951, + 0.31865005252174095, + 0.14330966613494228, + 0.14561863630981775, + 0.27399713554159816, + 0.2615795527939423, + 0.19459655467437068, + 0.2777710146757132, + 0.1151959824446337, + 0.04937104120144556, + 0.017934008861104023, + 0.24680349233878085, + 0.025053410059846386, + 0.12175133021948499, + 0.306816990335239, + 0.09016380459091906, + 0.12872670440855138, + 0.032429876431466914, + 0.24336586309708544, + 0.02487250905305853, + 0.062134291881366134, + 0.29269367879590313, + 0.052543574161261965, + 0.08524011333085756, + 0.1453462966690393, + 0.023916878605452885, + 0.26227240310241834, + 0.14668135271455257, + 0.026370217028023987, + 0.20444384199182014, + 0.09462701613347302, + 0.0766024456284141, + 0.24006725228162906, + 0.040414562824117935, + 0.11251260896357711, + 0.09549650527494685, + 0.19458142755535565, + 0.18990762278748305, + 0.2711606444958198, + 0.254433774073057, + 0.13320224010026788, + 0.15935608197977455, + 0.24784180936940484, + 0.007063940641053073, + 0.18244496610476282, + 0.26005222705007897, + 0.2894705758529006, + 0.19921342117575302, + 0.18662866936077452, + 0.19391358092229843, + 0.02307624603679313, + 0.19472975439082002, + 0.016577620273254004, + 0.10750146374553729, + 0.04536123850946084, + 0.05718052394784842, + 0.24221112060957967, + 0.19970755754395075, + 0.29792503939841214, + 0.0029405471408439857, + 0.184365890341908, + 0.20914915771836942, + 0.29578492123476585, + 0.22368678377561563, + 0.10248339568650283, + 0.17236953324301363, + 0.017325504162680142, + 0.27711237603762034, + 0.0691222001577861, + 0.04353532200155048, + 0.10882767311775406, + 0.08266585544728605, + 0.19693887319488185, + 0.1784809174738944, + 0.09648335039159876, + 0.093455428203795, + 0.29914259688552053, + 0.16442961299593586, + 0.2919343409774493, + 0.0077983513568743645, + 0.05156785112124006, + 0.17938749883416763, + 0.027787701515850655, + 0.12827631144538307, + 0.11221748792926727, + 0.06594506865999868, + 0.1010835011060415, + 0.09326423568949326, + 0.16085064098893526, + 0.23959695906666892, + 0.09358322714594634, + 0.1638126310778908, + 0.21904293259689972, + 0.10404950804217872, + 0.13333352655586392, + 0.24616465759269937, + 0.28294700591468064, + 0.14001996604436467, + 0.029948282387481154, + 0.1704713320130741, + 0.2165465592460891, + 0.3080500693446403, + 0.2405573870248584, + 0.2665854278359214, + 0.2753008550965409, + 0.2235215573369762, + 0.2586234477098668, + 0.23305417343357127, + 0.09101016714551508, + 0.2560083217538093, + 0.20556319868939052, + 0.2212038926178159, + 0.05149599291429548, + 0.2935021831636647, + 0.1947353333802959, + 0.17134305685133516, + 0.045182525988193355, + 0.13125332363079364, + 0.004168359417385088, + 0.012345847002295908, + 0.29563897276578927, + 0.09949244341593967, + 0.06082866044871284, + 0.0020646978655663325, + 0.1465711428197996, + 0.1406437405416253, + 0.2783359280495716, + 0.20197208027356, + 0.3034878447815952, + 0.178838073202521, + 0.030016839956771627, + 0.18488256796104754, + 0.24357259962333486, + 0.18108032470267882, + 0.32003990291144124, + 0.2464236574327885, + 0.07982157763715712, + 0.19278871713089638, + 0.1718802204142227, + 0.03047338254694096, + 0.05690091396223237, + 0.01597370907848816, + 0.010321678675423848, + 0.2767075918434004, + 0.2922496459106174, + 0.2661004206785118, + 0.11618426212404925, + 0.19722844070373113, + 0.20304687594601561, + 0.16971160437714342, + 0.26449179788408855, + 0.19476138426102255, + 0.07837327249692579, + 0.1252137795209896, + 0.2896455103403659, + 0.036006150888931464, + 0.00969718044720563, + 0.05290896546538171, + 0.09733658148519761, + 0.1313549767460562, + 0.09482350492613038, + 0.280996850183214, + 0.14176197520329276, + 0.10357514254647229, + 0.036048275734567405, + 0.18513064551724528, + 0.010197245175223489, + 0.2065779985017766, + 0.047397203401226884, + 0.16681555671617393, + 0.025055949485654268, + 0.1766156627680464, + 0.12612366981290787, + 0.05173998819760383, + 0.193340302808469, + 0.18185060812136716, + 0.12504480193032705, + 0.16878056820520895, + 0.03785336057337525, + 0.016030706172907496, + 0.0447904645858992, + 0.12895903292834168, + 0.07218925637141202, + 0.04417364907187509, + 0.1440391887921619, + 0.08850934007461059, + 0.017011068588304225, + 0.17125115059749207, + 0.21360522753570016, + 0.012392318476747289, + 0.24334431463451275, + 0.30814551451540195, + 0.16844489550101283, + 0.16260466062828105, + 0.24024919401161143, + 0.29120258585277997, + 0.03316882941425265, + 0.1852453132543558, + 0.019778258076019947, + 0.19655581476848258, + 0.178447529209965, + 0.09041280139243363, + 0.15912089365463897, + 0.05048422386343573, + 0.0865279902709634, + 0.04350463729176894, + 0.1406678929902689, + 0.2076560321811661, + 0.1961873938459254, + 0.08083484936692305, + 0.06697009796981507, + 0.037601304797340494, + 0.032205653060328555, + 0.13838451930639206, + 0.17408019943168948, + 0.045253895999163664, + 0.05459820369816108, + 0.069600287202832, + 0.1043255528285284, + 0.18187346768845086, + 0.2922044727753451, + 0.1953946298951597, + 0.1940036550073875, + 0.08651236135758493, + 0.23552349261353187, + 0.051186367392744, + 0.13725218333066758, + 0.3162810819303398, + 0.14214038383364663, + 0.2604850080176812, + 0.2848780921040411, + 0.028384466734436436, + 0.020690995574330538, + 0.019767113820587795, + 0.23990563418084423, + 0.16050085099555034, + 0.21328410513218837, + 0.18798546899905974, + 0.2590651290061526, + 0.22949822133728348, + 0.31317438833029376, + 0.1661070905137651, + 0.24398009899805126, + 0.017592068223328556, + 0.27293204225435475, + 0.08898114358085685, + 0.06826610170693, + 0.20775212125268722, + 0.24996064859413641, + 0.17955957428931102, + 0.26785729610408393, + 0.09029673985316893, + 0.18321529732327388, + 0.2057721078950934, + 0.04536261651276833, + 0.17364458577686684, + 0.1489950232515898, + 0.21384856722973863, + 0.07737341044096782, + 0.023844864406640486, + 0.22683286015745058, + 0.1292211977882412, + 0.04169435755394817, + 0.2916535673298963, + 0.2717399128135376, + 0.003414028015648644, + 0.1849183381830735, + 0.24254406578305676, + 0.13175728498937342, + 0.06021265221794055, + 0.2925713058425434, + 0.09177176935399506, + 0.1272447005344317, + 0.04844747717907579, + 0.23454246983392932, + 0.0401503516781159, + 0.05543146208892015, + 0.1094418814785909, + 0.03802207674814082, + 0.10909943749042425, + 0.022888071243956604, + 0.25050200675464984, + 0.053100363489543737, + 0.12943766981053764, + 0.1409389404843201, + 0.21095615473934404, + 0.2632446181620843, + 0.03934992512413706, + 0.24345192360762816, + 0.3182870046933624, + 0.2595134949773875, + 0.24271985962631695, + 0.047750543063613336, + 0.3031962972162401, + 0.07429613955967852, + 0.10647927739908757, + 0.2538048511913272, + 0.11718144876262086, + 0.21210428942159748, + 0.2547425180889467, + 0.05787330276070248, + 0.19296492505233634, + 0.03561617494639305, + 0.168366155013624, + 0.14947424749832025, + 0.19103561930019686, + 0.04939537206030004, + 0.00207877108206773, + 0.1612270943173625, + 0.06404570861301558, + 0.05834044849162826, + 0.26287006197243107, + 0.04403861344201299, + 0.31233396538101366, + 0.2840076302970903, + 0.18325680534318894, + 0.20330421341341723, + 0.01988107116921178, + 0.05324807793488442, + 0.25299939088151163, + 0.2028515260626711, + 0.18707311031916368, + 0.06002587105424368, + 0.15364888413575462, + 0.16365435582992088, + 0.2406594439892895, + 0.30893151644482003, + 0.17856603095682777, + 0.047065299898151225, + 0.08921698728068687, + 0.14122477895286992, + 0.23052782469436423, + 0.3080802399558309, + 0.21813892800329837, + 0.30134671132681157, + 0.08433206354528441, + 0.03912135059145844, + 0.16762171567815268, + 0.32415117575961067, + 0.23186694316458195, + 0.10203927095145404, + 0.1968238899918459, + 0.1444424259879095, + 0.0350534308733113, + 0.2679026986368898, + 0.21963192782017205, + 0.1775490463330152, + 0.3091785694414404, + 0.24806577579035133, + 0.24171037587646807, + 0.2790047640485742, + 0.08398276869471025, + 0.27111775862714355, + 0.07211145783377503, + 0.23756249338427654, + 0.1254547822418057, + 0.019710467555221076, + 0.08680266105373748, + 0.30375305474282355, + 0.21529044079895324, + 0.13304876427072157, + 0.19444553005317927, + 0.05239562999206824, + 0.09524208135726844, + 0.055330673789913694, + 0.040337445534063515, + 0.059366366395610375, + 0.19763277227420878, + 0.25042775065220074, + 0.25984719057620664, + 0.0011414902487738765, + 0.19363078214612248, + 0.05422246659582356, + 0.25431637880218744, + 0.11667564159703628, + 0.07168391323111109, + 0.15185245121061425, + 0.040017284535356815, + 0.1311709786715032, + 0.029556885463892374, + 0.2931054742142504, + 0.05799979472935344, + 0.10625413268102347, + 0.273035761073767, + 0.1254700790233716, + 0.11659986604328344, + 0.11440245075270977, + 0.036668383207299746, + 0.1013862352180302, + 0.16338301601186533, + 0.10173434728790048, + 0.2635034134915153, + 0.19719237454573185, + 0.07405317639475091, + 0.18505163652044668, + 0.013931732605568035, + 0.01835119002468043, + 0.08839980484914255, + 0.10734657172002783, + 0.2790052782363265, + 0.2969357280807069, + 0.05050981174164169, + 0.16204710497267272, + 0.018474694234647256, + 0.20497909263430092, + 0.15411110550186424, + 0.2696110261967548, + 0.12712433270233994, + 0.17365442283973515, + 0.25373624545461904, + 0.12324604493730355, + 0.09498593157480716, + 0.08488741131230572, + 0.09009663236572261, + 0.20294066174129247, + 0.07592329505602798, + 0.06771657102155672, + 0.16979075413846775, + 0.13207610348090937, + 0.24867440690143625, + 0.05398585111190434, + 0.09080586437881936, + 0.06645881061201651, + 0.13619578097897336, + 0.2511370779866724, + 0.026424747789094892, + 0.3208152821344131, + 0.21702390797970467, + 0.19666836929378373, + 0.08309094063159654, + 0.11422125564296555, + 0.07586741210114697, + 0.21721196046821972, + 0.1488396076970617, + 0.2789652214602697, + 0.08267174765982938, + 0.3161189828472671, + 0.061220803789664914, + 0.25942085119982133, + 0.27636852389973576, + 0.02380553415159517, + 0.23362470851046105, + 0.30249258803717866, + 0.10612282967173138, + 0.059082465186918655, + 0.10057255215603209, + 0.11388162268975692, + 0.01632484900589689, + 0.18812938181013614, + 0.1985754290698123, + 0.07907146290405583, + 0.1044137021871511, + 0.30506363136330766, + 0.16960237897593955, + 0.15207561157102298, + 0.1659353312126974, + 0.1477119732358105, + 0.20972139892999403, + 0.18589661190511528, + 0.0564413293677911, + 0.2509822202311551, + 0.07306140947088874, + 0.16769559130752834, + 0.30184721511538437, + 0.14829291280263243, + 0.13134345567860345, + 0.20647675797616782, + 0.24657885093007412, + 0.0413520204117196, + 0.0599263589576732, + 0.19611215103816493, + 0.047043113067791756, + 0.24276876719917911, + 0.13869579808743085, + 0.009013804858064378, + 0.039802941234309185, + 0.08816366699114912, + 0.04950107913171409, + 0.052107496433270444, + 0.2643789825518892, + 0.09933073431006847, + 0.0806618142855531, + 0.24434549609871364, + 0.16681546005148082, + 0.01642358749738109, + 0.18357916618899675, + 0.3227473367357342, + 0.06239500659822258, + 0.05019984641204454, + 0.20570413829024206, + 0.30748035797873446, + 0.04098039313253422, + 0.15455530743822174, + 0.02709744754498464, + 0.005740925557824203, + 0.22298204299623856, + 0.06927546698059169, + 0.23955098903624458, + 0.029791326426943533, + 0.2386212594015335, + 0.005538770585229066, + 0.19985928456115454, + 0.058772906612582956, + 0.2098115501572896, + 0.23419123276436063, + 0.23330091266784217, + 0.10493045080608962, + 0.09582679945095679, + 0.02340854647775694, + 0.21456116862687352, + 0.29227291221690993, + 0.2761932379595184, + 0.14692293213393895, + 0.12139475239045198, + 0.16221987523546447, + 0.26485929219672855, + 0.19546814511756952, + 0.22616783507068133, + 0.06804178863323382, + 0.18866346444235915, + 0.025808746341856575, + 0.04787332371728277, + 0.14268477262436224, + 0.11707715750661511, + 0.10143400354644408, + 0.266555950410028, + 0.15343716244749842, + 0.07813294351648514, + 0.010430262957327359, + 0.10411916281119044, + 0.033469198001118985, + 0.17302383855957956, + 0.06998426577705107, + 0.06522008099667849, + 0.32224101283632745, + 0.1294972557942411, + 0.3119086175051279, + 0.2747133673164904, + 0.21238900408996728, + 0.12176935588382277, + 0.0738794702526578, + 0.13951985140881465, + 0.034637168513945105, + 0.03146382430932738, + 0.25356824825251906, + 0.05945875075791529, + 0.23423542065262595, + 0.24655225410358314, + 0.24027418280838023, + 0.2096296756666013, + 0.11413268395916158, + 0.07243392135083943, + 0.11227966342062604, + 0.13431411755533967, + 0.07290814675693698, + 0.12070821085201104, + 0.03504621993744241, + 0.06064709977873582, + 0.2356415516196298, + 0.16562147607173977, + 0.014829202385980136, + 0.1779076242812238, + 0.16424854516071988, + 0.15763897539653424, + 0.21814554206486034, + 0.3194264555736467, + 0.2788347146780925, + 0.3223840203663431, + 0.1942047355372466, + 0.2813011475419609, + 0.0936377390581825, + 0.1330297010709277, + 0.28473271715085924, + 0.007399697977409521, + 0.04065068030683999, + 0.01799305033632992, + 0.18373661383470913, + 0.30829273650970673, + 0.04905323467340019, + 0.044505594401712444, + 0.1546950803842874, + 0.20031047993353665, + 0.2598995488764196, + 0.21245998291494925, + 0.046535472046024075, + 0.22943406527409155, + 0.017926510871029477, + 0.31644873601003576, + 0.21584198399633994, + 0.20745114139022597, + 0.14760059053384453, + 0.04002488553680977, + 0.16414451317883177, + 0.1423806252435174, + 0.0994708158897513, + 0.24659122728414398, + 0.2705113212395764, + 0.25621395678167197, + 0.013403938311359793, + 0.050433382493201215, + 0.1710937113885312, + 0.02634742576419027, + 0.15297150817000948, + 0.10897948806969747, + 0.11066951933211161, + 0.2201373569276441, + 0.24502326607368216, + 0.11764478202141265, + 0.24743663143485511, + 0.18171094739568427, + 0.1844487464871674, + 0.18867149117770163, + 0.12517514944401653, + 0.1625562044275287, + 0.007682612849725105, + 0.192776386832435, + 0.2590062506317009, + 0.23825354317950073, + 0.24750283727693118, + 0.20941584835029925, + 0.1479603037639854, + 0.19099024282948482, + 0.13721409175134022, + 0.30350171081605437, + 0.06022923474158729, + 0.039102350460951084, + 0.0357738032500437, + 0.12090406289514277, + 0.17420038748327993, + 0.3226281228958755, + 0.1239712061180854, + 0.13721432948748996, + 0.04085683925250503, + 0.21312821988724015, + 0.06561126728077868, + 0.21808702769101948, + 0.22250771967706032, + 0.2097690054743992, + 0.19476342624097553, + 0.04711882944878688, + 0.1646108930047375, + 0.22927854084826246, + 0.13494942913618393, + 0.061625525861580335, + 0.006788640275316281, + 0.10483364089048237, + 0.15467341099583704, + 0.00874550744512288, + 0.07679977248058471, + 0.07189355894324455, + 0.17086516579705832, + 0.13442479437461244, + 0.11724638858227829, + 0.21641629666069487, + 0.024487380479330238, + 0.24021856394512178, + 0.09360277275415596, + 0.27641452974329805, + 0.038486749376556294, + 0.033961827153138245, + 0.1396566725652269, + 0.12883591788465862, + 0.004303176460485466, + 0.10028045782422723, + 0.2204697596972189, + 0.09296592469485086, + 0.15651824007236795, + 0.20775664318727877, + 0.02322288327729164, + 0.2595895126967374, + 0.30886352315630755, + 0.29874284385796446, + 0.13577041798761716, + 0.19124294067858044, + 0.007128119986339611, + 0.03936636443101732, + 0.1625720039881789, + 0.28886440117259427, + 0.21704132840163562, + 0.10609490706772964, + 0.31361344764709803, + 0.14190697034971858, + 0.06547734491113769, + 0.09282261603255873, + 0.17579120757590483, + 0.11291998279409388, + 0.21747462058794423, + 0.04631350065778329, + 0.25419858595238337, + 0.301022563972158, + 0.2851763957989837, + 0.23780507233542392, + 0.242589469528289, + 0.2469404771781565, + 0.19642638670027082, + 0.03669077712500581, + 0.12739133516109805, + 0.09817876588318923, + 0.14206918715548006, + 0.039020105663792236, + 0.26373563016073964, + 0.26097410063098353, + 0.27574943246393435, + 0.0602524759806687, + 0.030773796303025003, + 0.26332163351910326, + 0.2257778508182674, + 0.15871592994893136, + 0.06785739889197057, + 0.2610128993843403, + 0.24706749721058993, + 0.21798758524355377, + 0.057455368620562546, + 0.2665564613141104, + 0.1190378812086775, + 0.24063830107142675, + 0.06276019803130213, + 0.18522166633294754, + 0.270674370288608, + 0.20310919437270472, + 0.264845310801677, + 0.2732987993580522, + 0.24446635685387005, + 0.2708639158709, + 0.2613603839751038, + 0.07223546810489427, + 0.03574309587773457, + 0.23258029587570317, + 0.0499934464710171, + 0.21910919371854637, + 0.19177225982702503, + 0.10410076654463657, + 0.10433286624548195, + 0.2236397146264101, + 0.25644198996398443, + 0.3169615859558352, + 0.15352806718857334, + 0.1943798139194885, + 0.14678493626491382, + 0.14004807022066654, + 0.18142647686042443, + 0.0888047012262782, + 0.03081752274511015, + 0.022566746129895756, + 0.19116301700757637, + 0.07995924803851849, + 0.07167569420287007, + 0.22564605864207068, + 0.016200715029413275, + 0.12038410516774016, + 0.10386226134448823, + 0.012400498781198158, + 0.24374985484619838, + 0.02805673444786284, + 0.2514157688900636, + 0.17315454573739594, + 0.1626516453347625, + 0.12059877034551499, + 0.10689864311192933, + 0.07557082476419204, + 0.20189471013153837, + 0.29847486155031516, + 0.2844455423756465, + 0.25752953762890696, + 0.18448234751264442, + 0.2722404003664796, + 0.2813621311487776, + 0.03891041167710826, + 0.19384853454427337, + 0.1525011421723293, + 0.19278571205044637, + 0.30006104321841837, + 0.10228918037882152, + 0.1547610423829063, + 0.013235687747120448, + 0.10690371117455383, + 0.27321474703871096, + 0.14251901771624714, + 0.21725127567917968, + 0.20354076305990396, + 0.1049884792200897, + 0.04343792729895125, + 0.12449257774708287, + 0.13173674288184098, + 0.24841291030443854, + 0.1535009500715905, + 0.09956027414500077, + 0.05558894153690475, + 0.1516504249982617, + 0.21916873900780498, + 0.28901718122286196, + 0.045881466552238875, + 0.04207447183610984, + 0.055813598526348034, + 0.14599321110782784, + 0.2837420655174675, + 0.15709054826494454, + 0.16087119794857965, + 0.003500471213984427, + 0.11367962469290645, + 0.11667021797991885, + 0.1199370610197878, + 0.16423610951758472, + 0.21705313065196155, + 0.09964761055064655, + 0.04891521064009924, + 0.19906909616187582, + 0.31038794987343543, + 0.31868998619205025, + 0.2891388870228015, + 0.010888520097307109, + 0.2134927222426513, + 0.25193008196041417, + 0.10046995747590913, + 0.22186354043810547, + 0.07881884943464233, + 0.214868061385039, + 0.1678928380685143, + 0.18940601150670303, + 0.1621539789544772, + 0.24992980769319012, + 0.18289470215339268, + 0.029762084932850066, + 0.18445234704007982, + 0.07921195969975615, + 0.2941384428351301, + 0.03263889864495672, + 0.0094044285128181, + 0.136681702177945, + 0.25083639241928307, + 0.22810808939240632, + 0.0723453868744947, + 0.015733873372316604, + 0.22974991005778467, + 0.1374951223857434, + 0.23461857633094974, + 0.232955286328861, + 0.020920779797960816, + 0.20978331871716324, + 0.21716345696486838, + 0.04460333568448142, + 0.060890063156408346, + 0.16163810400333625, + 0.16774080732416502, + 0.027133399108977416, + 0.11048942040329379, + 0.13104993959938882, + 0.02918245967237712, + 0.2206409369525186, + 0.2762063013007982, + 0.20491958022334855, + 0.058922145616613, + 0.11728473149969186, + 0.05381585970575245, + 0.3071022760251058, + 0.2021716572180271, + 0.13034444269247172, + 0.09898527145523055, + 0.10817817265727411, + 0.30715795705738647, + 0.3188502998692093, + 0.11409916677613287, + 0.30730479701247126, + 0.22850740923135668, + 0.28120641379225314, + 0.09301346391655999, + 0.05577441071045505, + 0.2560167568800074, + 0.06747784052337162, + 0.19159071037405914, + 0.23041226298066864, + 0.03241747021675781, + 0.13619096156742086, + 0.13857358881188003, + 0.23201863876149523, + 0.32048129907542566, + 0.2299213890199135, + 0.02455510639554216, + 0.19343597327672649, + 0.09533053460457337, + 0.18154155462167895, + 0.2774030580156461, + 0.067806112803177, + 0.05555696224563808, + 0.06117661471723505, + 0.21340323893380844, + 0.14398820597022335, + 0.05194027905589254, + 0.0466330482424279, + 0.04233087599882853, + 0.01094260408730457, + 0.10921579047118714, + 0.12446191533822092, + 0.27187737623313063, + 0.25387011221614786, + 0.020295649943600294, + 0.305130018163218, + 0.045706580251537385, + 0.16490478469414693, + 0.02911124976778092, + 0.21667288448822586, + 0.04777104449858289, + 0.19895770812652705, + 0.02005613100594492, + 0.04031883375957403, + 0.03855961722143748, + 0.11396655861186927, + 0.22804344987845437, + 0.10676801147844703, + 0.16563004402098344, + 0.29345214692076177, + 0.012374242423077665, + 0.1816311743711642, + 0.2413003565789571, + 0.29708481835496536, + 0.1926472121027401, + 0.22496636719799867, + 0.1092225571351704, + 0.19377036164472028, + 0.2874209227418949, + 0.31943373991245544, + 0.25641684462618036, + 0.15234537391764127, + 0.14770462449241253, + 0.023681102020294876, + 0.19967467212984372, + 0.025352632380086924, + 0.26092999596392513, + 0.08905210107618676, + 0.16980296657120753, + 0.020653334852424005, + 0.11914405773313883, + 0.05761210830681725, + 0.24658080447275313, + 0.21562173775215018, + 0.29176471980730573, + 0.11625504288795241, + 0.30094411973757546, + 0.05095660732555856, + 0.32051566310572066, + 0.049817092430502204, + 0.28298252941549473, + 0.049109008978362234, + 0.26382943134125736, + 0.12721876154142697, + 0.001961381641537423, + 0.3028034664239406, + 0.1881227178960861, + 0.006712940440500905, + 0.20836223021120026, + 0.05810500165526543, + 0.1975455813971333, + 0.16581380524929235, + 0.20462084372054617, + 0.10143326466638633, + 0.14057258951969276, + 0.18553940701170332, + 0.046320248544513734, + 0.12290258744726792, + 0.011651595596190079, + 0.29184640582894683, + 0.10561139974735943, + 0.2769663070650989, + 0.044008450752481255, + 0.25419792446734046, + 0.02241865167266878, + 0.31686893564647334, + 0.26119737005413, + 0.19698302213038704, + 0.05946524387131893, + 0.0014017103356671044, + 0.19224359730524276, + 0.037482495011483576, + 0.19527877844499647, + 0.016476019164156436, + 0.05235900727477211, + 0.31381421637448215, + 0.0376426818599033, + 0.08770498462531186, + 0.1722188428206219, + 0.0851826453276371, + 0.026539022351707565, + 0.22734560563361497, + 0.07299770522359245, + 0.10968539864946883, + 0.09249903161923292, + 0.11603435539833193, + 0.13256990766760657, + 0.03454732100482982, + 0.16372188453226788, + 0.20293249634182434, + 0.04835546778914684, + 0.187811698880726, + 0.05928892616342396, + 0.031054114876620333, + 0.2613089340105763, + 0.02342288757989806, + 0.16204610859828036, + 0.23577685468455697, + 0.1595278754090812, + 0.059377247402905384, + 0.25212083334613344, + 0.28343274687047154, + 0.2534033098796594, + 0.20621455585298507, + 0.18702451920989077, + 0.1262816617658752, + 0.22835257553724328, + 0.08610531653739571, + 0.03433614529101398, + 0.30024058906101997, + 0.04116026636701693, + 0.19940304531066388, + 0.2574077118959507, + 0.17125729397107825, + 0.1015226589997761, + 0.258366693416869, + 0.12763761934549508, + 0.22227405312358678, + 0.1074235806610516, + 0.018613159301553623, + 0.24910419105776774, + 0.10341496938386956, + 0.049145398156519554, + 0.20964341103415937, + 0.03175974544639368, + 0.0506081600846966, + 0.1529032491681603, + 0.2660992670849838, + 0.07944763897233259, + 0.10009100339640747, + 0.10082182991861438, + 0.1963549247171767, + 0.3175816362740764, + 0.2887420514992646, + 0.26822280604713966, + 0.16106509391200832, + 0.03399779495976913, + 0.02447236168890762, + 0.012988969056481264, + 0.2096958660456746, + 0.06646465083764967, + 0.18664528221024204, + 0.06870754578388234, + 0.14611675888680328, + 0.10032473609499398, + 0.06081032256987722, + 0.15580108251496852, + 0.17730870971713067, + 0.24809300170885296, + 0.13289397938092257, + 0.19236179425103914, + 0.07385482980019588, + 0.27541720322876384, + 0.2703772685485274, + 0.1292644186600001, + 0.30365478706712334, + 0.030083790308197137, + 0.1387348621350419, + 0.11758038858890604, + 0.17549489158454146, + 0.09025009560510656, + 0.24422164210522723, + 0.08788960588455048, + 0.22235583574209605, + 0.08079631957108421, + 0.26532998659675683, + 0.18095670538713698, + 0.05120038649567998, + 0.1227664056745012, + 0.09470235497460627, + 0.09660690257405694, + 0.01724293337432965, + 0.31117732252806835, + 0.013224241641845725, + 0.13505054395086108, + 0.17685727739036247, + 0.08347508000708158, + 0.17152682970764702, + 0.030037448847751235, + 0.08053251919286153, + 0.023137093608918562, + 0.27759459240991896, + 0.04288994128588033, + 0.18489096572780986, + 0.22910730060102755, + 0.1647247456909151, + 0.021284756979470503, + 0.2295222129850152, + 0.23829701908780948, + 0.3030547969761725, + 0.009439115631423156, + 0.2274823589290137, + 0.18994172340160553, + 0.11646952912072435, + 0.0016273244574570398, + 0.10590577764450738, + 0.1419420989695256, + 0.13337670324395287, + 0.09907045549949242, + 0.22043767955527607, + 0.24281641213114852, + 0.06542950198733319, + 0.29365575173883657, + 0.16420431999186788, + 0.3104967077490559, + 0.2606637605486834, + 0.1146454975843521, + 0.18936566086085585, + 0.1564127686753322, + 0.11529362933664396, + 0.03374943899826442, + 0.18862027890477795, + 0.2356287280926576, + 0.16019012183818318, + 0.3144589224100923, + 0.10963091070149032, + 0.0958672422757053, + 0.023935922654621127, + 0.009438511175041306, + 0.29269952177024344, + 0.05219424739137062, + 0.2709885081763418, + 0.2627569849242476, + 0.029946172544679232, + 0.01850069066640692, + 0.16867470968056675, + 0.026837420123532657, + 0.013573757045152787, + 0.2738803964925796, + 0.042712469594539955, + 0.06822417255570151, + 0.2999254832548879, + 0.14949386157875524, + 0.2690557966736404, + 0.3110991102810256, + 0.19017884811027339, + 0.03404201830706232, + 0.09839568942714828, + 0.19699083183743515, + 0.2052122862820023, + 0.15986104095799272, + 0.06098080187242092, + 0.015509478872013715, + 0.049198787652128234, + 0.23729681221774923, + 0.024860993012034212, + 0.10599566564979769, + 0.00840832028347558, + 0.22399879775868264, + 0.037142784768037944, + 0.14545901525798552, + 0.10439589246711727, + 0.21630109526929434, + 0.007863828047541797, + 0.12978582628406748, + 0.08674154349549813, + 0.11261053049773276, + 0.04147314360082913, + 0.08207855239680495, + 0.31360438574183497, + 0.06317795720350455, + 0.2527442886254074, + 0.05643439043383069, + 0.060988445446009266, + 0.005868421683726778, + 0.1038541002784468, + 0.2946054852446167, + 0.1483855808833999, + 0.2026157474587129, + 0.042955078494541415, + 0.2466012265019828, + 0.03513674849877089, + 0.08136288167939931, + 0.15286555269097007, + 0.17586879971280653, + 0.31382466544724724, + 0.1904538243384553, + 0.10961671082055194, + 0.07215177987610916, + 0.1354025763957001, + 0.020001048047249184, + 0.02165444864619052, + 0.15791018027696674, + 0.09654113544583173, + 0.08485653145854162, + 0.2468296697911449, + 0.21395168868212447, + 0.18961946809388508, + 0.064718242977769, + 0.16464884026011356, + 0.045192389968121784, + 0.26146932823560987, + 0.1898314783379402, + 0.004631321823511424, + 0.007571435193369461, + 0.024749739511708408, + 0.29088718162128374, + 0.20964230961924596, + 0.22154684121406584, + 0.10908909734587804, + 0.1459208787400911, + 0.06794264068018724, + 0.3025269815489891, + 0.06763598573727639, + 0.18801587185319968, + 0.24499876056576603, + 0.30062694088487857, + 0.11893056685165566, + 0.2830993339986224, + 0.2812711704994448, + 0.009456913137408566, + 0.06147082562534903, + 0.20614882269864013, + 0.09260811898629619, + 0.02451743298833641, + 0.27802646138662573, + 0.26726418639799804, + 0.20839215287553406, + 0.14674338310898533, + 0.2053079335393592, + 0.14414940827104955, + 0.16656459767672535, + 0.132220412796274, + 0.0808188082469353, + 0.09558969653353533, + 0.09530868313564352, + 0.116865426871101, + 0.04634595224104042, + 0.06645731323221708, + 0.2959620797031816, + 0.1360992773748621, + 0.02622216565472807, + 0.2347470789222352, + 0.04233059067427222, + 0.255753675940993, + 0.050426853880716785, + 0.1511907394680479, + 0.31177062137367617, + 0.2509419042770058, + 0.08918390677531897, + 0.15535718299691345, + 0.1519419540414298, + 0.08281223826690655, + 0.17656767684978705, + 0.15994972322420517, + 0.03165858457747675, + 0.07158449942070752, + 0.02881484981754625, + 0.23863419460896954, + 0.19657028802806922, + 0.04899427994076908, + 0.0930974470622995, + 0.16260766301190122, + 0.20627481875805445, + 0.17581575286761153, + 0.11451523880504075, + 0.007705306067080138, + 0.2471761037139694, + 0.025781843300135544, + 0.08064574234015189, + 0.3022733876341074, + 0.1303787476486188, + 0.29978606044932454, + 0.12387291643169893, + 0.04128984199638534, + 0.16843925351341107, + 0.2869343036837952, + 0.07918543876306226, + 0.06668340680274122, + 0.19396828069581631, + 0.1042349951242317, + 0.03082832927038769, + 0.026135776802276474, + 0.2024045421936392, + 0.29096772697872, + 0.1287237123353115, + 0.24969981881624223, + 0.3165510556058472, + 0.077853790022555, + 0.2722018980682566, + 0.3145544495668701, + 0.07689123214054937, + 0.1706499482982905, + 0.04625026162470714, + 0.2358751408464517, + 0.1280602761010164, + 0.03996301255990084, + 0.21384707009498788, + 0.235054573598938, + 0.06404685697767247, + 0.2763088548534766, + 0.025970223801430048, + 0.01212542844782918, + 0.1588994655778274, + 0.10060252849410721, + 0.08402628026586491, + 0.012944646724654455, + 0.17942564338826078, + 0.07364560685060126, + 0.08707913259162613, + 0.08585741986418095, + 0.07759075259930467, + 0.005036712241434339, + 0.18306497537058758, + 0.189295469949836, + 0.19781755499822704, + 0.29151298729904424, + 0.059894861027526565, + 0.06580535013937959, + 0.14738917498663484, + 0.19629403494003234, + 0.1636712335260618, + 0.14010648351527538, + 0.018077615767830308, + 0.09413355846678187, + 0.279298529272339, + 0.1399029892773882, + 0.09627273751769287, + 0.07277937541350521, + 0.15848717303390153, + 0.14823571072742048, + 0.1317107084418439, + 0.24605086932221806, + 0.15652661552241962, + 0.18250497398867757, + 0.012166115832097837, + 0.13298830644097556, + 0.26694407492896693, + 0.18688108940843903, + 0.3110396801101089, + 0.00808135658604539, + 0.2542411959384788, + 0.14054213427314832, + 0.019647838007868346, + 0.20527556903017652, + 0.12338501670441948, + 0.10852218001499572, + 0.30188661944030265, + 0.14800337585266013, + 0.19344490136894954, + 0.20304155788345016, + 0.19478933371617776, + 0.2689788789452439, + 0.09862755003914045, + 0.01883419499896165, + 0.07949659324533781, + 0.17723147256408497, + 0.1259304916106471, + 0.14502596311396296, + 0.15334807858092725, + 0.15420284287700228, + 0.2608850767418884, + 0.14963657983574769, + 0.3078361098047339, + 0.048169749118183246, + 0.2428580692664161, + 0.09793728022179812, + 0.030031640089999333, + 0.15397068590210888, + 0.2932810154610519, + 0.3053757344454008, + 0.19511179685641122, + 0.2693966180482973, + 0.07148394256994214, + 0.12557233893660605, + 0.010133702267173196, + 0.18421307956939276, + 0.15176832357947054, + 0.04952502784442002, + 0.2642274712549161, + 0.15095580059757394, + 0.2850362831120361, + 0.09529163171563912, + 0.2272961167217938, + 0.2868432066653512, + 0.18599935518014366, + 0.19999203124646728, + 0.12547876840479552, + 0.2945041497141064, + 0.19553464611941232, + 0.234345212724757, + 0.023646286193486132, + 0.2059493634786188, + 0.2722127782088083, + 0.042981780699244, + 0.20947025202288316, + 0.07417294874098632, + 0.2161197338237977, + 0.1170514002335398, + 0.2667728142293874, + 0.04950999679480169, + 0.2930313290889802, + 0.05151972685488714, + 0.3124207085446234, + 0.21240015863285122, + 0.20504079780874757, + 0.09148293945359084, + 0.10223709773159625, + 0.12053476995236855, + 0.28421348778222566, + 0.07713928799227812, + 0.0348072401238958, + 0.1280589299460543, + 0.1682609762326081, + 0.17820152727254132, + 0.03799719141795042, + 0.12534516605711532, + 0.22496953242081966, + 0.16017011151504518, + 0.28421837750296075, + 0.13507360338444813, + 0.10994821823644468, + 0.06553558647070262, + 0.14182093954679645, + 0.20836089645051709, + 0.10604114528667923, + 0.22161394428161385, + 0.17480153013345182, + 0.1253983690254647, + 0.26052468416537666, + 0.16695573049502385, + 0.11005518945043098, + 0.20022553245421235, + 0.1776228564726482, + 0.24244943387303422, + 0.005839437180482993, + 0.19607228595098583, + 0.20954365652299742, + 0.23433783427626922, + 0.11932738451498905, + 0.07750482269056395, + 0.2272412718545153, + 0.110690914240807, + 0.10108366930760887, + 0.06691941006800707, + 0.09164151041380675, + 0.28663259488487175, + 0.15240650150816068, + 0.06373764775546707, + 0.10365286951117661, + 0.04831565311809911, + 0.1127514891437931, + 0.008822440098091407, + 0.17711697669968562, + 0.2066404889175201, + 0.16313016851197817, + 0.0856558050120054, + 0.1649684935210718, + 0.2901316439580305, + 0.2662933818610331, + 0.03477248767914121, + 0.025600578790981213, + 0.16618045457248262, + 0.05533768531850621, + 0.15747562514536043, + 0.11989703056515395, + 0.2911738573609724, + 0.19152852099013953, + 0.20310561292155868, + 0.10800411236074998, + 0.2618863541224218, + 0.05732027157709178, + 0.17323811705407557, + 0.09850975589499425, + 0.24030866807110102, + 0.17606683839537854, + 0.07394735462596419, + 0.3146588465363175, + 0.02175159149687742, + 0.10509349618632903, + 0.2633564373385628, + 0.31184608306091255, + 0.11794720624869352, + 0.18756726212184918, + 0.10855969920507444, + 0.2198558178312724, + 0.06185201504724856, + 0.037280248269146166, + 0.0231444300994037, + 0.12010475993847877, + 0.20080231924139955, + 0.2763814734092602, + 0.1783169347971437, + 0.014259622021787714, + 0.09429395194354459, + 0.02657200237869314, + 0.30158049870962345, + 0.20078437999135593, + 0.11459486224375612, + 0.14878391797544083, + 0.06641235336425297, + 0.1576596804613952, + 0.22607969815757686, + 0.1042170678207666, + 0.27950660442316383, + 0.2538316760499933, + 0.13155365962510285, + 0.29934038624637777, + 0.029437188857142655, + 0.10336324685141131, + 0.02338965779869065, + 0.12018940628111775, + 0.2651221393973472, + 0.030574695478787068, + 0.14800233117696932, + 0.022529217460263186, + 0.20631007302919732, + 0.11203003793321303, + 0.2009236247399982, + 0.023770594823861554, + 0.24403144534678045, + 0.15029179798755515, + 0.16432122139243577, + 0.10624768136218066, + 0.020576741041496094, + 0.17069588737081257, + 0.03564301194505822, + 0.010460709053018068, + 0.05582172750859659, + 0.018158096025382812, + 0.20633967021891, + 0.15842023192675023, + 0.14352724082559873, + 0.17101975452858464, + 0.24894297556482767, + 0.2834544888708678, + 0.29321860667781935, + 0.08062401740754203, + 0.31456363143571675, + 0.3205956853710712, + 0.26384578195762837, + 0.03056620837109748, + 0.01681427959104208, + 0.05298372728897094, + 0.061123630073679054, + 0.26202087347649194, + 0.20298432400749084, + 0.08077348339256203, + 0.13786695475905075, + 0.14217017820969247, + 0.08339501963655269, + 0.05745450837042729, + 0.2923549413565086, + 0.27777494079062276, + 0.2852129235795315, + 0.26414350708667994, + 0.13846877309960512, + 0.12372175321502993, + 0.32011389895616954, + 0.19413175474205005, + 0.05558184732243175, + 0.04098417706414764, + 0.19741819680265774, + 0.04659322697197481, + 0.056166188303199395, + 0.20503907377003472, + 0.16727216922631347, + 0.14274596879210075, + 0.2614179445253419, + 0.18548100726503777, + 0.032968345350135604, + 0.13159427244970084, + 0.17192878796564698, + 0.061357135627495576, + 0.28227302418906614, + 0.05336352577353864, + 0.09643801683563227, + 0.2684506135532059, + 0.02751751445296895, + 0.1761834537279669, + 0.049718077764583896, + 0.09236629009438245, + 0.049002388986036656, + 0.12495155196246925, + 0.17263412794509336, + 0.05327272844051029, + 0.07775329870820173, + 0.018269128123835764, + 0.09807475064782047, + 0.03130399876122359, + 0.23349925098818228, + 0.1816402314331302, + 0.19699504705664989, + 0.16880436097871965, + 0.1246191154745916, + 0.21112247676902787, + 0.25998572573099143, + 0.2577574507459949, + 0.21989152815357824, + 0.11862255599484255, + 0.036732332068967415, + 0.044484228577011516, + 0.2293430178193605, + 0.07336217726368595, + 0.06134843127063915, + 0.19516663666912643, + 0.08827436833901833, + 0.11810562183804588, + 0.2665472140725538, + 0.014421191367073186, + 0.08902119860119959, + 0.12162514507161803, + 0.1961884988606215, + 0.11912349342814016, + 0.11406916050657076, + 0.20699075159935426, + 0.2686723498023687, + 0.020570020578206873, + 0.15970019411594752, + 0.2111766687132786, + 0.035646911339701146, + 0.08847365768221757, + 0.13634416625177398, + 0.13805045658526116, + 0.27897996838363887, + 0.14658944669934731, + 0.16830785968074666, + 0.12112430593736727, + 0.08607891573592154, + 0.30124260433889194, + 0.26084493146666893, + 0.13539365316690002, + 0.20232948864846637, + 0.06625935994899344, + 0.21904780149214215, + 0.15485146199314406, + 0.1882702761147007, + 0.21875745405814534, + 0.03483901893900281, + 0.29695684628189223, + 0.002975317906479649, + 0.008947075483630093, + 0.08589684783935747, + 0.11010522996680333, + 0.2955549885952869, + 0.22254458308157316, + 0.18229200762539427, + 0.049064416424688104, + 0.19443143595046666, + 0.05583426157141649, + 0.2436214360807213, + 0.1375905024161023, + 0.00939477884049595, + 0.12674687318356262, + 0.11927740420192733, + 0.008459987055328825, + 0.1365443008078542, + 0.1635434446804173, + 0.2503220053936474, + 0.2296530995773307, + 0.2189839199324456, + 0.2264891057955213, + 0.1389607036394293, + 0.056866322604281365, + 0.14539082119264063, + 0.18551001575157883, + 0.10747087896454516, + 0.003893430730755824, + 0.21638835943573823, + 0.0964467736783709, + 0.2815157280046125, + 0.21479812498358947, + 0.30733932911627926, + 0.009330200444309296, + 0.02798299802616283, + 0.229748380724042, + 0.290920207675114, + 0.2702923242452836, + 0.06828411351021686, + 0.20965065809485353, + 0.08134821278255563, + 0.015059862885723113, + 0.0380043238712491, + 0.1768767904944647, + 0.2254731444652414, + 0.1804815188030676, + 0.05217100161626248, + 0.052593223034338, + 0.1456930194407218, + 0.23097460844909123, + 0.2951899020403849, + 0.08537332722860239, + 0.08248798244353846, + 0.23118238441705408, + 0.24583883150348596, + 0.13328611001897356, + 0.2281142988091233, + 0.29342263039592387, + 0.18484313268247834, + 0.2812621493122542, + 0.0726623189097477, + 0.27602217411302915, + 0.07734232585311807, + 0.09911434487457696, + 0.06218419487600908, + 0.24508078694916627, + 0.2842110004016432, + 0.011117279993152606, + 0.2691930304479535, + 0.09676267115051994, + 0.30875931938143214, + 0.19901640695110864, + 0.23214068949932526, + 0.1354218852471806, + 0.06186038601149213, + 0.23496431834087153, + 0.18243854155302772, + 0.20800627512570455, + 0.28314950662892385, + 0.23203064743623217, + 0.11170000844417308, + 0.2141261299795361, + 0.2135038401708433, + 0.2194197502753209, + 0.10549186782384197, + 0.08154473480812284, + 0.06158686081063912, + 0.03642314556408889, + 0.03163764601839897, + 0.18893237428888995, + 0.0041766657603539165, + 0.04190445128112531, + 0.053074861528861955, + 0.044585209830287235, + 0.1502359588840134, + 0.09612916654623048, + 0.005987609276310971, + 0.1627698883919916, + 0.1872397918860358, + 0.25132908979288704, + 0.22739724862090704, + 0.17877902687064398, + 0.27733546131942655, + 0.2602413738254304, + 0.14880086316286997, + 0.23205906134997617, + 0.006562673056467419, + 0.17809339996836054, + 0.24684976134773717, + 0.012057332235054487, + 0.266175656894589, + 0.14355511469130655, + 0.29744537578210617, + 0.09050287394756482, + 0.0612383091674608, + 0.1694845232627809, + 0.07198244199828079, + 0.16632580800964886, + 0.22631744983257546, + 0.04003099371566918, + 0.01902453803493442, + 0.010243281988680977, + 0.011006873909398146, + 0.11813940741246202, + 0.10336277304532301, + 0.009355251950191462, + 0.11131824583357215, + 0.25062514400384656, + 0.05873744075483578, + 0.03634208343935192, + 0.043938182547500045, + 0.280447640006844, + 0.16887932146153117, + 0.24268508778315925, + 0.13801717926771181, + 0.045815278011045374, + 0.17205876010994609, + 0.29437935114617886, + 0.15102642284265114, + 0.09390047361916616, + 0.26040578568136896, + 0.17015825653138814, + 0.18575895698146122, + 0.14294935035782105, + 0.0013082884811308484, + 0.04366674584302609, + 0.20222220546904135, + 0.17933486967183532, + 0.3053200280398667, + 0.2782980760649211, + 0.1423517184210256, + 0.07593985548763359, + 0.2032476031251692, + 0.22730188283214234, + 0.1925932331383876, + 0.1618259442128243, + 0.16013869594818755, + 0.07848494779856119, + 0.13395300859296014, + 0.1372125688576478, + 0.005463393753968767, + 0.020321537593914512, + 0.11748420487129442, + 0.10701267519318497, + 0.2426453189335966, + 0.12418779807983983, + 0.20134825330532605, + 0.29498136869613895, + 0.21031381004354804, + 0.19893857819284083, + 0.022197913367741507, + 0.14433564051012837, + 0.06374737025087995, + 0.23448600025246943, + 0.0655487354560128, + 0.03725675569219435, + 0.24570381165914237, + 0.009209651089734306, + 0.019921481157271326, + 0.25210513192929707, + 0.15705618905794147, + 0.022843243458563964, + 0.2465708165243503, + 0.10354673216063906, + 0.21841787341286764, + 0.21367147798954736, + 0.09699778259607508, + 0.2323579624049327, + 0.0702153350942018, + 0.14420369929268212, + 0.08571826549904768, + 0.23164840660133532, + 0.059430628408160616, + 0.15488558601686064, + 0.07919844232157189, + 0.004910254536827379, + 0.22145944773556178, + 0.2660762226884348, + 0.08655916934206624, + 0.15012445178061617, + 0.30119412686716757, + 0.10201175474191854, + 0.2288480424429852, + 0.211622373455718, + 0.2823770835076777, + 0.21540059523972666, + 0.1907283484737892, + 0.23970890342148987, + 0.29094046605599644, + 0.1202735783944546, + 0.2731639787538731, + 0.027599789112629922, + 0.10454433592426439, + 0.2203821439084967, + 0.18441098806489908, + 0.1888484667586659, + 0.3039876331480313, + 0.24343110206861587, + 0.14393415993468353, + 0.15726462420866852, + 0.08461384243122931, + 0.1582313104292861, + 0.2661271526121148, + 0.1409648808790466, + 0.18412307205623074, + 0.11831433385340404, + 0.00636522896289137, + 0.03987980109168228, + 0.12943450805089918, + 0.15915870978584734, + 0.10413805943392605, + 0.3004553972862299, + 0.09577415402628435, + 0.2923061136691342, + 0.1648137387094411, + 0.020712362376625205, + 0.12227577508844925, + 0.13993646398516285, + 0.0987671191751548, + 0.01763764319904014, + 0.19736004689356593, + 0.20422745382972418, + 0.19983505512243677, + 0.1682746607573137, + 0.30337601824902305, + 0.18918442794342805, + 0.3033242400270611, + 0.06355932951427352, + 0.06244055096279047, + 0.22779955420261241, + 0.1139178837874982, + 0.056117815228826286, + 0.04578647269058828, + 0.1969616712228184, + 0.2050854246349959, + 0.026302439103343223, + 0.10693405904571335, + 0.19898658076577141, + 0.07929417574541256, + 0.10115216732892773, + 0.22540900648061263, + 0.17481322523268786, + 0.04542558059751553, + 0.12951836984323467, + 0.15605994119542194, + 0.06546544238114438, + 0.19087657737520727, + 0.1941375400901104, + 0.2677237667760549, + 0.019456177700121983, + 0.0885556764718562, + 0.21741655916403843, + 0.1333230893971366, + 0.25096255909684145, + 0.005797686130872302, + 0.1657084516424722, + 0.17137456215124025, + 0.01661528169833462, + 0.0290437633128777, + 0.14605013038704734, + 0.20374069044659981, + 0.023969604108965308, + 0.2574533966109796, + 0.23121283994402453, + 0.12338536636219898, + 0.2712927641844408, + 0.0022210115661760984, + 0.13115481216914074, + 0.03870640390152394, + 0.08144826608983768, + 0.27304369548299573, + 0.1887428408536021, + 0.10705923307767322, + 0.20533705163981855, + 0.15306967349984074, + 0.3004201949504646, + 0.306357116693404, + 0.0739463074321585, + 0.13697367129675111, + 0.04120229584848031, + 0.23263452531503986, + 0.17569588216414112, + 0.08287532975667135, + 0.10849016285229268, + 0.26044872999101193, + 0.2607348424652687, + 0.21426255497571634, + 0.30853869843589327, + 0.20379818780448952, + 0.25810782940992477, + 0.09146471468288526, + 0.00928555901113324, + 0.257483659338504, + 0.0971974208561149, + 0.19496472326507822, + 0.020399907419248083, + 0.212509765888328, + 0.1464893147075384, + 0.08923247427016319, + 0.16140726847597478, + 0.15140549600546022, + 0.1370722647302931, + 0.2538518333162618, + 0.258337554194617, + 0.15340860457349792, + 0.2914402586097388, + 0.015150184013781175, + 0.18518018466190136, + 0.036838725712993375, + 0.06572762174428214, + 0.13816379844982882, + 0.20430738947201207, + 0.02319838907825957, + 0.11126247123648038, + 0.01417038680772304, + 0.24538388123621863, + 0.19882219433714715, + 0.03841166739806583, + 0.22717436695045187, + 0.21299622188190284, + 0.1355113005955408, + 0.13226712702212684, + 0.22314864406547982, + 0.19840054080770445, + 0.014341412790025846, + 0.28168969938319605, + 0.08754337764940512, + 0.02402327103692299, + 0.03382616026214944, + 0.12142258886677226, + 0.2629667857431377, + 0.08747837322121108, + 0.16783453398271658, + 0.07435739453565912, + 0.05568726124206783, + 0.03416803760745859, + 0.020027639898719512, + 0.2622799324706445, + 0.28736215891540484, + 0.0320065563112554, + 0.09042756349543311, + 0.03808894679297944, + 0.05615172101837627, + 0.19331832880059843, + 0.2043266074527171, + 0.018437795586444355, + 0.3048808236127398, + 0.15852299903924938, + 0.12796646611952164, + 0.046998292575561734, + 0.1494929895029537, + 0.046553749625438304, + 0.005269976538080795, + 0.29186363441659896, + 0.307041288050445, + 0.20469251861941584, + 0.05686713829477231, + 0.043270353976056455, + 0.0343278394434463, + 0.10268311151941699, + 0.031028104926615625, + 0.29452944426103606, + 0.008783849254838522, + 0.18681127245540882, + 0.06396690709100429, + 0.08149080593050333, + 0.19104790136280042, + 0.21641001646657484, + 0.251999434877965, + 0.25114908787522, + 0.059042982668606483, + 0.15918610806508976, + 0.029545883856686245, + 0.06010106093948204, + 0.0649621354906516, + 0.19313187193597708, + 0.11295218253682987, + 0.2093331535295614, + 0.05645774154550585, + 0.02525636101429283, + 0.24724363165580812, + 0.27898115444966287, + 0.0632701939150581, + 0.0839519825395797, + 0.0654688896310595, + 0.21060997183712646, + 0.3114027943839424, + 0.3064298906331288, + 0.2740760067030924, + 0.3195559935481534, + 0.07749792761958893, + 0.3003872213265561, + 0.23047689848276973, + 0.2136589906250219, + 0.03309972201717694, + 0.22492823720241598, + 0.201868727357108, + 0.3027758805373924, + 0.2835539502902321, + 0.24059695219903215, + 0.11138396895765877, + 0.11268856935562377, + 0.3162593442741605, + 0.2944227907665575, + 0.1351321416586221, + 0.285729484682759, + 0.24352018781937174, + 0.2376007392900046, + 0.24259154757323373, + 0.02534531865795615, + 0.13854400665960098, + 0.17557084961134292, + 0.2468942194295475, + 0.1375161616299761, + 0.16010258287757406, + 0.30656347503939546, + 0.2955559578258399, + 0.19458882208430603, + 0.21623496092029246, + 0.2904983668299791, + 0.17750765978921657, + 0.1347843526576717, + 0.24249553690851755, + 0.31402388355055744, + 0.10474312588153875, + 0.2916086024870162, + 0.14009695131171268, + 0.09709478410132788, + 0.3146843806352462, + 0.31251924582559015, + 0.3217543788821077, + 0.05362009038497432, + 0.17779542623543446, + 0.22059272635494095, + 0.11047797603414694, + 0.11840155883987699, + 0.09596107805474487, + 0.31714559826351435, + 0.11414573256640369, + 0.05870957822666993, + 0.10100868113721856, + 0.0468565233610647, + 0.29459523761616, + 0.22820683435152722, + 0.16791159156872884, + 0.32100092996109064, + 0.06416324650440482, + 0.2524845945962122, + 0.2708271697273168, + 0.3183442348728953, + 0.23944136647304426, + 0.21444311300552618, + 0.2664533606367243, + 0.15326962400640973, + 0.11183797833077792, + 0.27167414854922095, + 0.31226900466721774, + 0.11494507409750725, + 0.2468173381493523, + 0.01940562007911429, + 0.25833930103051456, + 0.1296741010061383, + 0.29261125113620406, + 0.2833732865170331, + 0.2779528744144469, + 0.06551727114476413, + 0.3120694196436214, + 0.012733616000406955, + 0.30977697863354814, + 0.1177642627579804, + 0.1368945463262895, + 0.1971052054161182, + 0.268716646283398, + 0.3166531201075028, + 0.1521523877093263, + 0.30999975419262504, + 0.23250402059549646, + 0.2983538499869923, + 0.27513773851709916, + 0.21696359231209075, + 0.022989584516771553, + 0.28778016999518197, + 0.24700827772804415, + 0.3014015918279045, + 0.16154810056900765, + 0.25670334071623085, + 0.1387915873315839, + 0.3123111779481489, + 0.2867409797560852, + 0.2921229519221381, + 0.2648812280905177, + 0.21388746537446798, + 0.2543454996050511, + 0.184015709501408, + 0.14511810952688503, + 0.07431560240849584, + 0.25793575102659727, + 0.23755417244781407, + 0.29670696545724257, + 0.2616854931899381, + 0.24825926499296788, + 0.3154672318836072, + 0.29674442141148905, + 0.19994480877630136, + 0.29606033130327686, + 0.0949134556429366, + 0.1193625965617501, + 0.3192975812854978, + 0.0697267729263259, + 0.2714865853585937, + 0.1513134068933203, + 0.2304505800903032, + 0.07900390561216737, + 0.10405214617243005, + 0.3013363549187382, + 0.3058847535883011, + 0.19383270612232129, + 0.3152064448349728, + 0.14608807721941242, + 0.190163292437463, + 0.1030171492864831, + 0.290927154202821, + 0.25085345290534805, + 0.26265971544536465, + 0.25581139696821364, + 0.19412731678336834, + 0.017818461952671727, + 0.12018998904324883, + 0.3207535276925807, + 0.04027008759771978, + 0.22607724890779604, + 0.20239078280085301, + 0.12813992081954728, + 0.2807993980062725, + 0.2172712882214551, + 0.20848987507892822, + 0.06460169595457133, + 0.11470022369523465, + 0.3113818784535631, + 0.00835575283530031, + 0.28977196947973066, + 0.2933559732104484, + 0.04233191950124811, + 0.09332430427480404, + 0.2999398953681784, + 0.11912031105275858, + 0.011574700021703492, + 0.23676271576543714, + 0.2093603432002219, + 0.009738105638666963, + 0.23155314773298952, + 0.19567810240598413, + 0.09433506694172879, + 0.2831139755765848, + 0.26030326270446624, + 0.20447322888448033, + 0.251242188393036, + 0.2543888181723918, + 0.13129495709841213, + 0.25910601954831775, + 0.09455818285529197, + 0.02179829188462674, + 0.30506565059764235, + 0.32373382923421695, + 0.2843834993444984, + 0.14885216736439083, + 0.26707348749784754, + 0.27821359836156884, + 0.14622016560562484, + 0.30137635318303774, + 0.26603360912273366, + 0.3121448234480715, + 0.08648275362212184, + 0.29957436156672684, + 0.16518615548155366, + 0.29955119365214133, + 0.1885029646084964, + 0.26746998487357065, + 0.09407521598613873, + 0.19840448697320467, + 0.28825358153625724, + 0.3172319146753494, + 0.18489760763083024, + 0.025413273413400383, + 0.02440409552295456, + 0.3123787110660724, + 0.1242578121527304, + 0.20525529317416819, + 0.2369274585590322, + 0.21593915507791864, + 0.07468696681813908, + 0.24381409597726172, + 0.16965383482185514, + 0.2369071742705042, + 0.2517307070872527, + 0.00890480977486671, + 0.22337975509669525, + 0.30883030599652256, + 0.32079831787610685, + 0.30203464841912364, + 0.30480923695126905, + 0.30018642192215617, + 0.1558120504172084, + 0.06715382248790026, + 0.2297693245468581, + 0.03864092479083949, + 0.07564206956404504, + 0.021474502822671007, + 0.16831075777137774, + 0.28929592277299837, + 0.20843981998737462, + 0.25072549238611075, + 0.30437406457004884, + 0.11168205336943582, + 0.10449991970679179, + 0.25124823274969116, + 0.12864045915306638, + 0.2892559083260384, + 0.2864302413069665, + 0.1869412964660205, + 0.153434753072612, + 0.29161682442872666, + 0.3177492150351406, + 0.0841753698500695, + 0.15342924569276467, + 0.27849502658684383, + 0.19097316382840598, + 0.09131011638938347, + 0.3030381795598993, + 0.0737192020582533, + 0.32080504139670507, + 0.3119492248129041, + 0.009945996446357824, + 0.2880727456390805, + 0.2132417917775103, + 0.31292503352710843, + 0.1370699007227856, + 0.19362965035235188, + 0.302507739684522, + 0.3040388024465033, + 0.23726920744975538, + 0.235822731071721, + 0.1268632636857003, + 0.22003886339236237, + 0.24437261862859494, + 0.2952148153177575, + 0.2131884601480523, + 0.2509013452545873, + 0.05921137287039414, + 0.1816081551653537, + 0.23692103628837188, + 0.14867168501697467, + 0.300229328066917, + 0.04942615864183684, + 0.19037973957045845, + 0.2178558635254142, + 0.2689493682540116, + 0.20319134141461337, + 0.28418605868524394, + 0.28649938922199814, + 0.32222492984703477, + 0.2784428416038638, + 0.17130551714956965, + 0.07832312206010741, + 0.2957977836672897, + 0.26489010505949195, + 0.2794233502146301, + 0.2901108403910513, + 0.22345230379434589, + 0.016528198249320124, + 0.2505246442675582, + 0.1581930690875049, + 0.272369876101389, + 0.2418219401996724, + 0.21146053444293547, + 0.1600967305756099, + 0.21431943196869144, + 0.11291814840762648, + 0.2923894893421205, + 0.19382472584270613, + 0.14350115062518126, + 0.1339013320758157, + 0.24215196756591398, + 0.32079520637755105, + 0.08593730838550301, + 0.0915671679082846, + 0.17713325891950965, + 0.1484190318951595, + 0.1742373809288826, + 0.30868613244880005, + 0.1418649873365736, + 0.20751495358259658, + 0.06974209672276267, + 0.15995283615469022, + 0.279215243952012, + 0.23066862378370262, + 0.3179232768861153, + 0.2888646828412087, + 0.01229031683083869, + 0.27089847747344253, + 0.13979191910665173, + 0.0977750248423647, + 0.07704649018727258, + 0.2099579387027825, + 0.12943339532380152, + 0.2673765385148939, + 0.2951420413229434, + 0.3229405397021885, + 0.2780049058867088, + 0.05840432065000765, + 0.3081218321599393, + 0.2266998238853881, + 0.10300699143272309, + 0.25224125990451673, + 0.22233500793699928, + 0.14646761445541256, + 0.3187669100805705, + 0.18868972208906118, + 0.2296567945774517, + 0.321199824268598, + 0.07313645094318105, + 0.29066796491633795, + 0.3222652618319796, + 0.16818706875726352, + 0.04670084583101125, + 0.12921206842572905, + 0.29040313052728156, + 0.2768763100977773, + 0.23741507852009636, + 0.132692290716283, + 0.10199110938707606, + 0.2697352970882652, + 0.11488695247890897, + 0.18827512453890075, + 0.2369804330456866, + 0.2697613592763056, + 0.2916460229377242, + 0.27322577692018585, + 0.3127526800403761, + 0.11074174805832011, + 0.15109424293374588, + 0.19833057164092943, + 0.11703933645997922, + 0.24117442550508958, + 0.05400207875676287, + 0.24527061328619354, + 0.11709469689441065, + 0.2887461464647274, + 0.11695520169397988, + 0.3144004859874502, + 0.1494560346440628, + 0.20321381576650072, + 0.24057638881870513, + 0.3121510426064254, + 0.15407552911843364, + 0.2919501990444823, + 0.2823073259795071, + 0.3119091757121985, + 0.2775292365358909, + 0.18085342670251076, + 0.2991815266019529, + 0.2238268793290549, + 0.252165557843131, + 0.16897756031987632, + 0.20907812148515437, + 0.30825539028074483, + 0.14784640636204244, + 0.1233581093577829, + 0.2737917571458233, + 0.24952016660717574, + 0.2649857813977896, + 0.2015682791675279, + 0.3143724176597207, + 0.15261381206650848, + 0.3192149778192818, + 0.13553386086914998, + 0.23019825669960434, + 0.2812262403762425, + 0.21363903422793157, + 0.2619369559437767, + 0.2481928752032798, + 0.21349802588007435, + 0.15764843707150314, + 0.3158610637176008, + 0.11246087963136285, + 0.27806004541427926, + 0.2777183131206609, + 0.025997437864934206, + 0.21241303843978185, + 0.28691888411770033, + 0.22537699392863622, + 0.3187986076206924, + 0.2808772476208797, + 0.1337180225829296, + 0.18789512812384554, + 0.11229407576833209, + 0.053428955661142946, + 0.17938781920312655, + 0.25411518282484075, + 0.08547337365259035, + 0.03736533024768326, + 0.26765662977790483, + 0.05865321226555143, + 0.12152560968592631, + 0.20998531718428676, + 0.29711819031352493, + 0.065270759439233, + 0.14561450602861853, + 0.303409161866672, + 0.29888302160993957, + 0.2471842089194829, + 0.2850433165407496, + 0.2692854590134723, + 0.2938153653873281, + 0.12896096648048722, + 0.3051883273138236, + 0.17285048483584642, + 0.050855170869212145, + 0.1598159096036641, + 0.24767228880743195, + 0.07444348000075629, + 0.19607726806369966, + 0.31095868821520417, + 0.2362380382943879, + 0.23856284623022347, + 0.13542329802944242, + 0.20232764020885616, + 0.13594623823717836, + 0.2524947974468419, + 0.2980016838805341, + 0.3132260369732514, + 0.08514678966056363, + 0.2916776537077139, + 0.18314301331961216, + 0.19984650883660093, + 0.19288157921151078, + 0.28347461969188026, + 0.2647998621487242, + 0.28626921357044866, + 0.2902710392234402, + 0.05990310586513515, + 0.2322836109233143, + 0.3172300035815807, + 0.04964135533413868, + 0.19972547785578665, + 0.221588609748743, + 0.006682076131537961, + 0.30713660614845206, + 0.04079929872262811, + 0.1929006202193605, + 0.17847781459946346, + 0.3032124136876006, + 0.1364595637317656, + 0.27456268167926545, + 0.11715466433691674, + 0.18991648498916255, + 0.09933238269008132, + 0.3070974066506395, + 0.15236574993101715, + 0.1657764142323044, + 0.28199519154548697, + 0.29476635550840047, + 0.009806743766167284, + 0.0699177276822157, + 0.24271846944118064, + 0.2586752565593006, + 0.13770929963671355, + 0.09720972105130364, + 0.21013973409328848, + 0.3007824562935286, + 0.2837992058271253, + 0.19892128634852774, + 0.3175573393435412, + 0.07670819177244362, + 0.31478592450481785, + 0.29252767184744927, + 0.13005041639342566, + 0.30546189128335066, + 0.07080382055421754, + 0.1526771104746443, + 0.32069618839221864, + 0.29340468710061807, + 0.29046932781342716, + 0.13149067854934482, + 0.2777297281982996, + 0.14002734507392323, + 0.303851634477221, + 0.1573123023071375, + 0.23850694909890466, + 0.11018484961992023, + 0.2360453692251804, + 0.09954429213804353, + 0.28476450960640604, + 0.06442719664679732, + 0.1649354157510925, + 0.2035677355172259, + 0.07459083212370156, + 0.08905134983520335, + 0.30285633788345945, + 0.1830736859682409, + 0.13243311356128304, + 0.30857932721303916, + 0.24137037218279095, + 0.1910334387630669, + 0.30714628854556786, + 0.2954137489009469, + 0.11524007618949124, + 0.14329940680481185, + 0.1892581434284247, + 0.24692784341587445, + 0.2948514748380821, + 0.29478033088496164, + 0.018531072878121932, + 0.009624495362920994, + 0.21460528809022214, + 0.30889295721640025, + 0.306135894962206, + 0.18323591176335627, + 0.2497520037352582, + 0.25020123784756415, + 0.2361565996298872, + 0.27476802132126854, + 0.14058584417475636, + 0.2975470813613464, + 0.03860271234066933, + 0.17982055933695792, + 0.09902576322449642, + 0.10942098652099287, + 0.3145123769149998, + 0.17761184527785995, + 0.024524190707169918, + 0.12874491775984306, + 0.3039619465111921, + 0.24371603148984433, + 0.20341817780913476, + 0.27045590956657684, + 0.2583691935378612, + 0.1512108557101298, + 0.07570542874787539, + 0.2334943551543351, + 0.08497129682203314, + 0.034196094406950546, + 0.2858801742901744, + 0.3154387567980009, + 0.3115853513679572, + 0.24255693704509554, + 0.28093262223739385, + 0.29188978281617195, + 0.25587648118657014, + 0.3069758410262109, + 0.1664677186718195, + 0.09188173717226439, + 0.27844903579096925, + 0.16405199740658188, + 0.15415632649495786, + 0.2778720521261735, + 0.27209581267678495, + 0.31857872662069947, + 0.2855523471513844, + 0.3121948009334693, + 0.015060280890499786, + 0.2678466674291499, + 0.025038634458768895, + 0.20377433490007987, + 0.23268579734907455, + 0.14789629147215974, + 0.20886860000755547, + 0.2565655366042359, + 0.23526015499142164, + 0.3034516067014563, + 0.3245989548431352, + 0.1979477710485385, + 0.269726266616032, + 0.25294469040819106, + 0.3114783566489416, + 0.04708332570015489, + 0.24516137230688534, + 0.22301981341581967, + 0.11608647364234514, + 0.26496468711036214, + 0.26126057793572666, + 0.13926285112139938, + 0.2863369739153583, + 0.27351261961295237, + 0.29840795594432257, + 0.11106524347924181, + 0.31270198361264917, + 0.025158125833099242, + 0.3142253548152456, + 0.2538738962422758, + 0.23630102735528755, + 0.07108252095539574, + 0.2980084890767245, + 0.3102346995249678, + 0.19138753165019612, + 0.28102208573583054, + 0.24488736306117878, + 0.05106808416666272, + 0.3031165044549647, + 0.2849445127852772, + 0.25823967181106666, + 0.2594048878081343, + 0.07753723110439574, + 0.29434250559452185, + 0.15582593574845044, + 0.24982264994006317, + 0.2922399366625663, + 0.2326403793858854, + 0.259446116703626, + 0.2527457787514931, + 0.11429486838945137, + 0.24249192018165205, + 0.0864467249803181, + 0.2585860808161118, + 0.3164024473945526, + 0.0160762332774737, + 0.2743288920821871, + 0.28969908553787976, + 0.14938661099202644, + 0.30547310497230734, + 0.24144965095637533, + 0.2680688231054674, + 0.312348352701991, + 0.21720101738092668, + 0.23053250818796744, + 0.24095937070647144, + 0.18077338744499866, + 0.25155155786547484, + 0.31015421082663003, + 0.14973846354076736, + 0.23947757570795306, + 0.23811649691390838, + 0.04038318147186157, + 0.2206460931228841, + 0.28925665474497153, + 0.058408739937004746, + 0.2546135768560508, + 0.30774493676480863, + 0.25916949143630125, + 0.30508252689216575, + 0.1047537522264308, + 0.19464211356865618, + 0.07621666713863534, + 0.2999504085775197, + 0.2868726434373773, + 0.06807100088870564, + 0.2844135214551305, + 0.18335956674063428, + 0.1420820859520656, + 0.1756953769199706, + 0.305819845748924, + 0.06946395903515035, + 0.2499064302058957, + 0.08402487189660332, + 0.030482407444550986, + 0.27053798180480554, + 0.29949000680003723, + 0.15804875866709336, + 0.18847308754085362, + 0.3089256286370262, + 0.22917219871866915, + 0.17382110673812526, + 0.13669765694745376, + 0.1092198969871246, + 0.01249490831857202, + 0.022737581688326063, + 0.17290124063686482, + 0.21220440137712576, + 0.2969628010685857, + 0.2530400890338978, + 0.22415980927817114, + 0.316428844231056, + 0.22911000960155717, + 0.28922904843579794, + 0.21658858501866124, + 0.10356507632792833, + 0.31801355333926984, + 0.2830674705601002, + 0.10771764688189356, + 0.1642012242045967, + 0.019891584371996514, + 0.14221131081443336, + 0.22942893482019705, + 0.1069109081023749, + 0.26502599235860996, + 0.19704288536443107, + 0.12509086388412416, + 0.2721472401877011, + 0.2993007155134703, + 0.19378610222740594, + 0.3077275101688099, + 0.021889859662693235, + 0.028791219386701497, + 0.31065408101678443, + 0.19876124642878834, + 0.23153106299021592, + 0.21934341666988041, + 0.04473388155761919, + 0.22913292917351893, + 0.020819662430281192, + 0.30993019007803246, + 0.29089536473871386, + 0.09599195323281659, + 0.2921349262467775, + 0.2697988971858578, + 0.1790152162395465, + 0.06770988069503539, + 0.15435792801485013, + 0.315438207242484, + 0.3159383493953981, + 0.22344415928915423, + 0.17769406337452232, + 0.10116279404093263, + 0.15427058814122746, + 0.2065538649287449, + 0.10896928330262844, + 0.24581591167287264, + 0.25807387674743126, + 0.12103117577507673, + 0.24981105034381507, + 0.20267206428133663, + 0.2337386327725435, + 0.17707869279946617, + 0.2796439097143129, + 0.2047361431370857, + 0.15957193186907448, + 0.16956834716959407, + 0.15095204588921446, + 0.2967104153117351, + 0.2892250944591763, + 0.264635525141574, + 0.20268899659876266, + 0.31303143392003546, + 0.28902704125884904, + 0.1892897692661756, + 0.2024130917124336, + 0.3018609122407584, + 0.3112649463027553, + 0.29278556106630793, + 0.25195797924624325, + 0.18644247095229358, + 0.22635451094410636, + 0.1405889996369455, + 0.26032439932237994, + 0.3204082070093995, + 0.07660203871853624, + 0.18262724725784707, + 0.1303618017722617, + 0.10331250208905977, + 0.20709531538212966, + 0.2950384494884472, + 0.12693500868646437, + 0.28623013744774556, + 0.3040325899418004, + 0.26922111539239346, + 0.04004261688100314, + 0.3095102115000658, + 0.31133999921422445, + 0.314771302126099, + 0.3118838275817921, + 0.25370515175666764, + 0.30239470683446773, + 0.20239589084531032, + 0.15143085485340402, + 0.25204538839740465, + 0.1778414284637215, + 0.2234088942772311, + 0.23268092273016633, + 0.27018099070506346, + 0.30933117098671326, + 0.21389712231602606, + 0.3019409866758076, + 0.14013328819713344, + 0.32431090941131097, + 0.30030343175333074, + 0.19604502005541602, + 0.31674605210327433, + 0.25235855524794104, + 0.2205609132037727, + 0.04011603255038648, + 0.12851894524550297, + 0.18709876599988717, + 0.10784573721126278, + 0.233170236480709, + 0.23799683051240142, + 0.039753756967053536, + 0.26605559438356513, + 0.21238230915884826, + 0.2404909272249862, + 0.07531166746797366, + 0.030514550369428167, + 0.23822803584430313, + 0.30147906556074666, + 0.22134134946944586, + 0.2721493869625097, + 0.1798286689641257, + 0.3179264607557186, + 0.26456368406206976, + 0.2670820912672862, + 0.08676767693508167, + 0.31125446049809363, + 0.3147726430088926, + 0.21810116392801382, + 0.10427194954562505, + 0.1831353902209953, + 0.06634013657718664, + 0.2238642105838814, + 0.15001268911698878, + 0.30684038661123514, + 0.32152768371164575, + 0.05986288835788833, + 0.12355756370857002, + 0.23772230351400966, + 0.12278944548669378, + 0.30647015083451884, + 0.15308429652070532, + 0.3157217358324464, + 0.17705341040598446, + 0.22160505068806213, + 0.12106646582395264, + 0.19915264020720044, + 0.3074247628734754, + 0.19856381781268526, + 0.10298184825870454, + 0.311461009671775, + 0.053364898552517956, + 0.30882387201574824, + 0.25028979945445884, + 0.16386007184903842, + 0.16361767342616934, + 0.237662929981435, + 0.07771368079307028, + 0.17644077599040148, + 0.20823096909252775, + 0.3074782951556923, + 0.045969395465592484, + 0.3145684085672134, + 0.2864543388821565, + 0.26754755068157643, + 0.2766593937022405, + 0.31958915422870005, + 0.17201170408023117, + 0.09693942498586818, + 0.2914035050905627, + 0.3054377828314576, + 0.22843184480415807, + 0.30968785496394574, + 0.2518942143828556, + 0.2099758254722195, + 0.08027188697949308, + 0.16643801189697596, + 0.30332625726552703, + 0.16031058066872148, + 0.3187605569295695, + 0.21354544437543116, + 0.31706666575711945, + 0.323781599027803, + 0.1484407270550038, + 0.10608753046226499, + 0.03855563374009703, + 0.1518729683035541, + 0.22827554024803098, + 0.17999838547538877, + 0.008128150553071919, + 0.2460488268541951, + 0.23082914304070204, + 0.3138608586008805, + 0.27575074672597183, + 0.29573465998862364, + 0.17703038107941904, + 0.16968354164896837, + 0.27624056381079165, + 0.2973891691386823, + 0.008181299109368429, + 0.05854377107648863, + 0.21221186891120428, + 0.29906227026768634, + 0.02823532962733171, + 0.14175160593691222 + ] + }, + "mode": "markers", + "name": "Samples", + "x": [ + -1.4667515089896195, + -0.5790633384243934, + -1.5435398824037605, + -0.7880737146142803, + -0.6809902292870229, + -0.6661581010694717, + -1.4176920767436187, + -0.7809403344828725, + -0.22215599415247367, + -1.0443541316885225, + -0.7752149162475835, + -0.726993692535098, + -1.255491029792055, + -0.5495727643310321, + -1.1629487154968356, + -0.3310590060410756, + -0.25886713353314195, + -0.38484465956454333, + -0.8271660797424499, + -0.45869894548750884, + -1.0409562049356937, + -0.29767660196878676, + -0.23129773666249698, + -0.6146739745728058, + -0.23928409279309723, + -0.7871413894466872, + -1.2204671996915444, + -0.9541667162378777, + -0.9351539614118634, + -1.2424884473985938, + -0.7495237849902293, + -0.6312836968170541, + -0.7061038597425341, + -0.88824313557038, + -0.6963319169043274, + -0.9095892838595439, + -1.027367437476644, + -0.45287588646971627, + -0.39706328932997564, + -0.9585722197089535, + -0.5098947533685516, + -0.38523349937695667, + -0.881523293413903, + -0.2569020466063843, + -0.8019182604977485, + -0.4057790560745802, + -0.40035101120165045, + -1.2456943137886842, + -0.9673319442244634, + -0.7684898380567852, + -0.4513927487760398, + -0.5490694778638632, + -0.7320595620675265, + -0.4703235923926819, + -0.6266420482785372, + -0.4181916304450253, + -1.1705425920757526, + -1.1351384177264299, + -0.7683722333473658, + -0.3842743319905672, + -0.24778853457871422, + -0.7336207543875285, + -0.6152768289861482, + -0.2912589303902388, + -0.27916535336134113, + -1.0867928951843482, + -0.4586694237610463, + -0.3199509624232216, + -1.3422073460446713, + -0.7536599261005174, + -0.601082809551367, + -0.5224044079544212, + -0.4156987642132697, + -0.5384628686880422, + -1.1753542629162863, + -0.8726933805429867, + -0.5138281899704763, + -0.6975649197240055, + -0.37812697427703884, + -0.27654582132566596, + -0.35735615014650174, + -0.5316314895738521, + -1.145081368090527, + -1.0399785427841106, + -1.009974119358116, + -0.6314185355840964, + -0.2331468575477539, + -0.8228345560687372, + -0.2935700391381559, + -0.3105518767412249, + -0.2839135363390448, + -0.6477645715254493, + -0.4391714539712093, + -0.5205408700629842, + -0.25367692773361467, + -0.39998320182827746, + -0.7567966922250715, + -0.38218866921568634, + -0.9234393327276432, + -0.4252459253260543, + -0.349391465149318, + -0.8719944946390298, + -0.3686615795776081, + -1.2585468019503523, + -0.46065884771652776, + -0.9580616649583921, + -0.5327853269786734, + -0.36749873179066234, + -0.287215037791013, + -0.4686987233187426, + -1.0276697934212433, + -0.544497281124754, + -0.9984376297675638, + -0.4304822902278828, + -0.434992461887345, + -0.421682014121349, + -0.6771354541485628, + -0.42882300251475125, + -0.3952583397162227, + -0.7020734607001652, + -0.3229175677359276, + -0.5561500000949224, + -0.8807610972862912, + -0.9460198576875761, + -1.2447776672773982, + -1.1479810873941838, + -1.0574455806613074, + -0.2935961830619391, + -0.3989290287810421, + -0.5534515206616327, + -1.4517279109737906, + -0.29504886134373404, + -0.8716891954942397, + -0.7256366262765611, + -0.6625871597780724, + -0.5390189238908434, + -0.4495545843679283, + -0.5144231357967869, + -0.2925439046041846, + -1.3254655024983708, + -0.5098814208905753, + -0.7455083845603095, + -0.7166081330606084, + -0.4411894830041861, + -1.2097098766043952, + -0.40377351347340384, + -1.737186218777263, + -0.6299552543145079, + -0.7806323587067713, + -1.0517536663909246, + -0.27056228761465917, + -0.9225134304124896, + -1.1088238215181772, + -0.8150799445740189, + -0.42988929964760103, + -0.9791945394017437, + -0.7177084687011921, + -0.5378194223462949, + -0.8984541463064291, + -0.34314001846877035, + -0.22647044994126406, + -0.8020702913783198, + -1.0131170484880738, + -0.28860222548608977, + -0.761528087205973, + -0.4021374079193053, + -1.0206363508695455, + -1.2770450699331575, + -0.8748655418063721, + -0.6361437348064232, + -0.29095868522694535, + -0.4793015783081467, + -0.6256554921957405, + -0.8662581882804561, + -0.5126570174366148, + -1.3761806470552833, + -0.2753375505214452, + -0.37315200422896133, + -0.9929716545031225, + -0.40354704742842856, + -0.49160696722540903, + -0.7119997663953727, + -1.1776044184794863, + -0.3240183474314143, + -0.3323696741942943, + -0.2893150210574461, + -0.2833105969000716, + -0.38973959872465447, + -1.1474515695626903, + -0.35903966033183676, + -0.8183353060389434, + -0.3611077163675936, + -0.6802109285577989, + -0.3912986588603686, + -0.25365779469350613, + -0.44325326108255503, + -0.7330641258828908, + -0.35690046762140004, + -1.114886937308783, + -0.4095549129208012, + -0.35256152232604415, + -0.5523493627631615, + -0.26514089262410057, + -0.9997408637057746, + -0.8921123983371109, + -0.3488855192268438, + -0.5214388261617969, + -0.5848637141548317, + -0.3164149366226771, + -0.8574547198645814, + -0.48792526879882825, + -0.6480726713663053, + -1.5541939436370382, + -0.39833595760500684, + -1.2217799744468485, + -0.7400880437122817, + -1.3840444643068337, + -0.7319123604317591, + -0.3899308575933119, + -0.5412301134748964, + -0.3115317938627566, + -0.2595378588203591, + -1.411034868222459, + -0.3472201905948351, + -0.370180076869879, + -0.3896512037211502, + -0.9929309725709711, + -0.49102662321939283, + -0.45868853651695674, + -0.4288885909417323, + -0.22255762861234946, + -0.7334087748412731, + -0.33297271870362904, + -0.4237426544008057, + -0.6517233025982048, + -0.8109587222494623, + -0.305401232127859, + -0.4767446312032811, + -0.34476136644428973, + -0.8861335957349988, + -0.5813493438008485, + -0.2916984494107494, + -0.8667347405067114, + -0.6662032132428166, + -1.183718508782624, + -0.3467550731427867, + -0.26426982346790706, + -0.27379176636951613, + -0.5640006387780291, + -0.6692803395286483, + -0.6739448837914234, + -1.4791880870286396, + -0.6652782091235644, + -0.33406190048146456, + -0.4309552249337072, + -0.2999873524908851, + -1.0483058854351452, + -0.4558208281743951, + -0.5566118750516482, + -0.3469056276314206, + -0.6071619482398745, + -0.5277639918172548, + -0.7726542207673796, + -0.47618212608834, + -0.8376965467871182, + -1.3321122699704628, + -0.8715121789797805, + -0.33093189437555676, + -1.2734574845287334, + -0.7377564816664928, + -1.2806348818018, + -0.43001022508361125, + -1.3811724546842385, + -0.5418060194401757, + -0.7030215574649756, + -0.36466051253930537, + -0.5539177648351991, + -0.711388532466459, + -0.8217904167300983, + -0.6780767807934619, + -0.6874160575382979, + -1.0425295356694197, + -0.6316677875265279, + -0.7057876003842705, + -0.4648917740553694, + -0.612528240105111, + -0.3049370268313365, + -0.20258225883973294, + -0.5005705881849407, + -0.2759711947490402, + -0.5057690770818718, + -0.8120668677012762, + -0.2830095996159061, + -0.5070570612815087, + -0.7362918602767035, + -0.31493887768294115, + -0.29229495294569646, + -1.4233106283263537, + -1.1708244072062015, + -0.6258494955860517, + -1.2486519224098682, + -0.8571607935366056, + -0.656544555357858, + -0.42018840019452064, + -0.7119347385123891, + -1.1388352463648581, + -1.2721675943386286, + -1.1940420876223046, + -0.7828828525297681, + -1.2571902584193488, + -0.25268870812061506, + -0.4830317060223369, + -0.395227325885267, + -0.6211744150619781, + -0.9283543507467081, + -0.9371572430162715, + -1.8692102366548102, + -0.33875112111097316, + -0.2584094606592847, + -0.405315911318289, + -0.36282237707261045, + -0.2294848852258725, + -0.7475350985460163, + -0.7025603088285018, + -0.6482455287460178, + -0.687500820132255, + -0.6696057613490176, + -0.23861915552155763, + -0.4819848422916155, + -0.5914903486936832, + -0.37606583635189716, + -0.24813646321047475, + -0.34323093631618234, + -0.23694308431499908, + -1.440406340877105, + -0.6515875665633059, + -1.794901552997255, + -0.6425784789441203, + -0.31157104976687533, + -0.21940340070301126, + -0.5128793151906124, + -0.4307940896318981, + -0.6783219730811806, + -0.9679562984696509, + -0.3296754464461936, + -0.9066534498236859, + -0.8470022412841115, + -1.1442156583829028, + -0.6049030762786517, + -0.8872482151353781, + -0.21775480716976928, + -0.4113488979196679, + -0.25834650983652446, + -0.8820449819307155, + -1.039507598482556, + -0.731544537608164, + -0.7450145999391584, + -0.6867843478521848, + -0.9183339395143681, + -0.5466324511707067, + -0.45718189966677014, + -0.31985812250375784, + -0.6470951238912639, + -0.8968934026646704, + -0.5699808578431923, + -0.7332296145920328, + -0.964586946507631, + -0.6338039278856022, + -1.3081752070122847, + -0.6688291926834856, + -0.6194440092013205, + -1.371069744545857, + -0.4439352665547536, + -1.6799337208443172, + -0.5149422313554987, + -1.3307813288150168, + -0.2543587946074502, + -0.46055094389882023, + -0.4646268244566624, + -0.6308434438868186, + -0.4824854377636459, + -0.4872933883924047, + -0.4327954446107907, + -0.3720106987571837, + -0.439776146638002, + -0.7357180149036969, + -0.25248649890622143, + -0.592086939738244, + -1.538649895515943, + -0.32344865570598713, + -0.36046006803508096, + -0.7728727809280946, + -0.6772769479664695, + -0.7883763079206464, + -0.37533513635105537, + -0.2135567553594619, + -0.7531605802248135, + -0.6815523633391891, + -0.7677731426902993, + -0.4247026849223633, + -0.368275507390876, + -0.6956908161343915, + -0.7157023928497405, + -1.1359250562378957, + -0.23763009245671554, + -0.2775206497211944, + -0.2649043943011158, + -0.4483275119247894, + -0.7407002721308581, + -0.5928904447698712, + -0.41177911668248907, + -0.4715296692823231, + -0.43110103081529233, + -1.2180924650109444, + -0.3583465137161367, + -0.8070964296084777, + -0.446023521170633, + -0.2102891223843266, + -0.2097175938843591, + -0.48338482035250535, + -0.4762731973999992, + -0.4165889270681212, + -0.6587976110836249, + -0.8900305208594583, + -0.974443629051636, + -0.9023255031065993, + -1.1580924416171816, + -1.1361383088420773, + -0.6599131903311872, + -0.9274438552534084, + -0.6058511763675909, + -0.8206020199108702, + -1.0942025350347362, + -0.5720272388239412, + -0.5647705242792688, + -0.23765337904230502, + -0.3398505299877096, + -1.523959830216154, + -0.22242619997453658, + -1.7841883592649166, + -0.6081452388659376, + -0.26320455290730455, + -0.2743914658223848, + -1.1189776789682808, + -0.8048184490798836, + -0.42198619774201473, + -0.8313599170540501, + -1.7302037836316353, + -1.120576886486916, + -0.20083358801994303, + -0.2090831892891727, + -0.2940948879883434, + -1.0688095721591755, + -0.3265820204241754, + -0.25796535729220615, + -1.0659385378386097, + -0.374650158508675, + -1.1944098512322252, + -1.5156284870543761, + -0.6944366429661167, + -0.23150056369652505, + -0.5653158943646235, + -0.3087396049432832, + -1.3671205620874567, + -0.5906244721789992, + -0.7914421887452622, + -0.3496911808015845, + -1.8445480909992795, + -0.6804605458966007, + -0.6566310938972416, + -0.2083972500415083, + -0.9007857215382672, + -0.41261370506724054, + -1.275273221743306, + -1.7543927630320715, + -0.9267738737918223, + -0.327324755462774, + -0.6797021886213299, + -0.797452424176946, + -0.6830486964411149, + -1.488575247849262, + -0.44019813965300675, + -1.4895948568291044, + -1.2517599125680743, + -1.2079497630056024, + -0.6351708519086158, + -0.5980390129074433, + -0.7781811674789311, + -0.4685164323219777, + -0.4517619475298156, + -0.39116982505619774, + -1.9072724725102421, + -0.2781105511866482, + -1.7373101703101255, + -1.998449376075458, + -0.4607280675546788, + -0.5694057404195791, + -0.6836865153997328, + -0.30591209122592433, + -0.30502323323572295, + -0.8817419593328046, + -0.4661970188964971, + -1.19750373059071, + -0.47365463120367657, + -0.8668122586103925, + -0.3638355876146821, + -1.7179543924779237, + -0.4360303045466097, + -0.3736980832676535, + -0.6827941015536856, + -0.606151733678104, + -0.22333995310238458, + -0.20470259550261208, + -0.6541096221726104, + -0.9887929123092992, + -0.9308715988608588, + -0.2557205404441554, + -0.3139373914970066, + -0.8215971280664988, + -1.220369237541909, + -0.6451277552807293, + -0.8271984833340307, + -0.7190397949185756, + -0.3168446973814252, + -0.42358963420035955, + -0.3956586314727917, + -0.3869796277023778, + -0.4044895142597208, + -1.5639364605812778, + -0.8828353934961193, + -0.3182472781783348, + -0.9185723904345228, + -0.36845278567267525, + -0.3934270876444073, + -0.5040741405029854, + -0.3287961337507045, + -0.6875314411791053, + -0.8243142947235532, + -1.4100240663372294, + -0.7780560871491846, + -0.5107372989384538, + -0.7104616083391393, + -0.48989831018229696, + -0.39283130363582586, + -0.4827813816664917, + -0.6572226455064698, + -0.4182797555881974, + -0.32926613313596353, + -1.1568684326689267, + -0.3227530833826153, + -1.8519031708500444, + -0.6739825312268726, + -0.3634077234984936, + -0.69630345078505, + -0.4057216937896617, + -0.21351870845390022, + -0.515467035640527, + -1.0835016039725864, + -0.4631196899310904, + -0.7471321106710326, + -0.4088183699459141, + -0.20654471614203518, + -1.3292640919782914, + -0.8723473774988265, + -0.41199522721898185, + -0.44428026470612686, + -1.9386766260066943, + -0.5465417256829804, + -0.918467585843905, + -0.300889431312205, + -0.3523967267298571, + -0.8671149441986202, + -0.6345953020322229, + -0.7804511939610308, + -0.6100370533066982, + -0.8674141277221272, + -0.20202416770120457, + -0.41102764721050755, + -1.004508062339198, + -1.4139809904410237, + -0.8446040091736344, + -0.7380145274623713, + -0.35418247372145245, + -0.6037818705225177, + -0.5347736021411841, + -0.6209297000415278, + -0.3867144810104474, + -0.8059926734735796, + -0.4518164938676446, + -1.0600650392035955, + -0.20134059404050267, + -0.2771835140245081, + -1.4887162819207342, + -1.2097196546499969, + -1.1597006523383007, + -0.7913253161049635, + -0.4435116508809034, + -1.4333252855071668, + -0.7473152264508669, + -0.27323665827026844, + -0.9536145416728306, + -0.5601145484970839, + -0.4421542507755204, + -0.20688579214856606, + -0.22923928533360693, + -0.38405837633790935, + -1.038430459533264, + -0.7732790838737102, + -1.165264508183141, + -0.5207565889250441, + -1.0866878393364316, + -0.8057838011644455, + -0.21312266089724982, + -0.6621479943023486, + -0.24033669719537953, + -0.22996065942137314, + -1.3041758771470022, + -0.7597458625094142, + -0.959224324552792, + -0.39151016233799696, + -0.22338379181103823, + -0.8218170924675052, + -0.5730364728114619, + -0.3301354757137461, + -1.1500992117197564, + -0.32957251566351087, + -0.7131310038612009, + -0.6987574943004461, + -1.5558092535500125, + -1.129741408260928, + -1.5161176969719827, + -0.24468079175231405, + -0.9482500138984797, + -0.3614605874811405, + -0.9862389133788655, + -1.0719584539857365, + -1.05796232333806, + -0.5475849381357648, + -0.42727396207910107, + -0.6785691463855915, + -0.6156113491658274, + -0.39618216825894337, + -0.46564239284583375, + -1.0074335057040347, + -0.4268076722791955, + -0.38039392211081524, + -1.6487089208051657, + -0.3995693162229643, + -0.27077023235183867, + -0.9596438608249784, + -0.7584514269937306, + -0.5253148882376868, + -0.26447244977947665, + -1.138059542144247, + -0.4011675916512855, + -0.4747838336291965, + -0.9341037547642225, + -0.6126771922041079, + -0.3564209700350011, + -1.2942250587415611, + -0.6267219649618757, + -1.2722795862605072, + -0.9212698109729562, + -0.49189903400778645, + -1.1061944827889791, + -1.9304567887037503, + -1.011021805618249, + -0.5178772011642349, + -0.2154620556287784, + -0.6435234361192386, + -0.2724740574351633, + -0.2145331812787856, + -1.1198749883372332, + -1.1575797964853156, + -0.5345015411584766, + -0.3521719594216333, + -0.4127488299694216, + -0.48088286650707474, + -0.806543845611556, + -1.6821555327458546, + -0.7155280422369289, + -0.48101130036742584, + -0.2813352536575611, + -1.5907489505068868, + -0.34012885009748306, + -1.0806001397087341, + -0.7823081530769892, + -0.26549796753777827, + -0.7162998623528744, + -0.43554938845640856, + -1.0906472074745133, + -0.21370742107246302, + -0.6779037955345744, + -0.5432481212132517, + -0.7252638988337274, + -0.7801436022078739, + -0.4907347943575986, + -0.42388022539774733, + -0.3918889208045065, + -1.1248979727851818, + -1.3850561175891452, + -0.7746789372138172, + -1.1062294986015964, + -0.5507052784335154, + -0.46935666333926634, + -0.26214267061871227, + -0.46406968299746637, + -1.9999376330351428, + -0.5035909780785772, + -0.3115108021722356, + -0.7825227612126084, + -0.9612503379609182, + -1.0109435545721812, + -0.319161041164713, + -0.49647265319727407, + -0.8364372069270214, + -0.6549050829327184, + -0.44428312840392675, + -0.9190077411155071, + -0.6730064873322712, + -0.20863105116594155, + -1.152964656616306, + -0.9496305221642822, + -1.139471010828018, + -0.2940068200571684, + -0.6971630096824071, + -0.36738569085252837, + -0.42132595757944113, + -0.6570931250466215, + -1.2197496485861736, + -1.124195456442725, + -0.43520423652324447, + -0.9622114489839496, + -0.5967489828276259, + -0.30417485293268937, + -0.8811876008175503, + -0.3046273060281897, + -0.9639506421860431, + -0.5031690035595647, + -0.4305522911298151, + -1.30265132830295, + -0.974434139301884, + -0.5919693658610833, + -1.1811141531688227, + -0.7453778620083029, + -0.375593090223646, + -0.39247050531235944, + -0.8096698405649558, + -0.7208234891544728, + -0.4489748669222336, + -1.2009266225029862, + -0.6408668011821871, + -0.755267318200301, + -0.6840580628171089, + -0.5091827916125221, + -0.3629303817243719, + -1.1994267084896038, + -0.2400026661400186, + -1.0447120775207774, + -0.7974608981436466, + -1.414360473304135, + -1.6404922621010658, + -0.5058096275401923, + -0.697402752215401, + -0.20999399722591558, + -0.392641665876604, + -0.3416856993040956, + -0.3383952349061352, + -0.6012496305687505, + -0.6653653540297084, + -0.2248425995625818, + -0.30662765990225893, + -0.5602494677617743, + -1.5807983746183876, + -0.3067867700086469, + -0.4835821449886224, + -0.8271580405996515, + -1.286455555643974, + -1.3197823149005132, + -0.5349344540738674, + -0.45769164481102836, + -0.6072669187880991, + -1.0379595079374921, + -0.7306899851764169, + -0.8941792738663797, + -0.7823270984654109, + -1.2070476093245617, + -0.31860003878994075, + -0.6956087600141532, + -1.2389458329591796, + -0.6814809979715937, + -0.7491131253198249, + -0.6286241270020342, + -1.1035851121287832, + -0.8005588359372553, + -0.5813634807592303, + -1.8232116496802895, + -1.9771806292250786, + -1.4716943486757217, + -0.5115444834784842, + -0.41869729038319703, + -0.3413307410228098, + -0.8375647470354444, + -0.47528511760717873, + -0.8540712625584109, + -0.8615933861526459, + -1.3174402366561024, + -1.299986952089124, + -0.736819527006218, + -0.7456394500708909, + -0.27352154032711073, + -0.7017215750026625, + -0.33202657516643236, + -0.24785869732105525, + -0.5160269252241094, + -0.2635256253999394, + -0.6008515934114059, + -0.6445169046462731, + -0.6698922291197438, + -0.2713889372938922, + -0.5581973346398473, + -0.780690999720683, + -0.22036951301375873, + -1.5607967131348914, + -0.2850621193546593, + -0.43604760515733687, + -0.7289682956331016, + -1.01007578953657, + -1.4472676622304028, + -0.9915084424074133, + -0.5137592718561693, + -1.105955010931569, + -1.3451000243879678, + -0.2547480842636876, + -0.37295724923266654, + -0.5943798801130616, + -0.2927776253296611, + -0.3867992812980984, + -0.3278195291204005, + -0.33801751995048596, + -0.7627132145972209, + -1.4370631660793447, + -0.532331442885718, + -1.4121192974899774, + -1.3049106388523304, + -0.45180964339698626, + -0.32762445658202727, + -0.30139568692805396, + -1.375215137368138, + -0.47472630927986514, + -0.9902267276254432, + -0.6316080073350071, + -0.49985849513576064, + -0.5564338485574627, + -0.23785670570341003, + -0.37445245964968193, + -1.1647032246489748, + -0.3992361768382778, + -0.852422778858215, + -0.5021688067473857, + -0.3739009280709113, + -0.8428775708042917, + -0.32012949769999494, + -1.0593567436744147, + -0.5384924631824289, + -0.5925464845153774, + -0.3528650846491671, + -1.2767684282930991, + -0.5577153553950581, + -0.27630011439177016, + -0.9670935722910218, + -1.015716290556304, + -1.0747359733456106, + -0.39440243906810435, + -1.0097265954156769, + -0.45940620353700956, + -0.2161059780938429, + -0.6285723441491734, + -0.5594796507539387, + -1.105570742189663, + -0.972138888727773, + -0.3491329501409191, + -0.6771064601505468, + -0.5020659196125178, + -0.3526964885355658, + -0.5365665595408048, + -0.20619964240957125, + -1.2396169998325544, + -1.0580846959566916, + -0.8044674222621593, + -0.5148174357046986, + -1.2547727747528237, + -0.9482073557798447, + -0.25875126366828005, + -0.7838948563767549, + -0.9631308345010947, + -0.7051628945756213, + -0.5922659475620846, + -0.7497689573902135, + -0.5503334465755391, + -0.46114825379246305, + -0.2661421468015469, + -0.4560993385549935, + -0.9453631114563084, + -0.671526316567795, + -0.6422324818566791, + -1.0499533048676954, + -0.5363850826026986, + -1.065324699097405, + -0.24382931524452317, + -0.45996616122960426, + -1.006262498948445, + -0.6530233223140962, + -0.8344328627105227, + -0.4901680536699724, + -0.8595176945570743, + -0.4210345789393033, + -0.34699862327062464, + -1.1925303482661422, + -0.6672375020016433, + -0.8916238597031877, + -0.23824373062357942, + -0.8544250182874419, + -0.3940449930307898, + -0.268946899099666, + -0.6503998398154687, + -0.6926759326510963, + -0.9768051931995342, + -0.28561825042346617, + -0.527131786713126, + -0.5316147567303705, + -0.5894496534781918, + -0.2912490070031772, + -1.3676196371768488, + -0.30372128863244896, + -0.3652344437727391, + -0.6409883449734605, + -0.7125576705876969, + -0.32692172263808034, + -0.2729010108762933, + -0.26669508346203774, + -0.6123926199756916, + -1.0204627401231399, + -0.2540387330528254, + -1.2674014545822287, + -0.474967404435733, + -0.4717079326498636, + -1.0008547763665678, + -0.8872552158401803, + -0.96602317321276, + -0.615254498831308, + -0.667256580742035, + -0.8077822533458096, + -1.64085452836896, + -0.8982887695263438, + -0.9353096533555187, + -1.2214862851027126, + -1.5651175202831784, + -1.1280450923736678, + -0.43238004404410624, + -1.0436150049531487, + -0.6323104113394121, + -0.4003280583451471, + -0.31220377601652216, + -0.26337114034602055, + -0.9097178994554956, + -0.7145363449671348, + -1.0158681504615432, + -0.7632943672612644, + -1.0777211194520182, + -0.22005806413114082, + -0.7103593932010838, + -1.674380451935477, + -0.6025941445971728, + -0.6126178632572196, + -0.629762199213212, + -0.9633212943431922, + -0.41271419892462985, + -0.8258180537938068, + -0.5154075100174412, + -1.6000438458279453, + -0.21316404139327233, + -0.21646030531458613, + -1.2819341371023656, + -0.2598025028000277, + -0.32485863108001495, + -0.4275694207211337, + -0.8928015023151897, + -1.2571435284026553, + -1.317759542076624, + -0.24080489651812131, + -0.842199501261407, + -1.0632639359948908, + -0.6249129815309603, + -0.7198926541794977, + -0.49075991743791336, + -0.5842862810507873, + -0.2600214997481182, + -0.7231084702843313, + -0.41039943558876807, + -0.5034881680589892, + -0.5807009010351555, + -0.8950151521257396, + -0.3941043468154464, + -0.6146424521661501, + -1.30735206758542, + -0.5120281694294346, + -0.31521322668954593, + -0.7167725327787358, + -0.3031761357248694, + -0.9745228961288832, + -0.24995484786013158, + -0.5781132448827632, + -0.5811606011625213, + -0.7199295403931943, + -1.316511537158417, + -0.23886090715026995, + -0.8694799647964034, + -0.7066141080974625, + -0.45315814478759436, + -0.8550206355635366, + -0.25549994302478496, + -0.4650972878089482, + -0.657651710744546, + -0.29088336755349525, + -0.22620928814947813, + -0.8747123412332145, + -1.7662626463995694, + -0.5712981168043859, + -0.5954294675184568, + -0.41898821165396466, + -1.8285311171141365, + -0.8963689246721045, + -1.3561677139334638, + -0.9138129316805456, + -1.3878041634486802, + -0.3298731297678409, + -1.309402765530986, + -0.4263982038271273, + -0.22729783880969667, + -0.5044412610275527, + -0.4565063151548069, + -1.6426692877091789, + -0.4224126376871095, + -0.7361945596546966, + -0.3715272608134339, + -0.8909794918348141, + -0.370890907017237, + -0.5426057190144139, + -0.2889077414959937, + -0.6217924485554215, + -0.8360766800588112, + -0.5389125191779918, + -0.23880086377154222, + -0.473076342396492, + -0.66123815617749, + -1.118230595902223, + -0.6243712823669599, + -0.7648722934303819, + -0.8156079742309419, + -0.28526814903978154, + -0.5113728356819389, + -0.4529148144189225, + -0.6914248154915988, + -0.3361068233232818, + -0.3578922074888835, + -0.4731267194718952, + -1.0544444214880921, + -1.0275840965197975, + -1.3755800931094917, + -0.44907571583058004, + -0.2831893897439799, + -1.4515179441072195, + -1.0988827722259717, + -0.7389542554112613, + -0.6559259101339717, + -0.41947244819041263, + -1.2942249337945781, + -0.29404131292730723, + -0.5484897819761491, + -1.4025918214058548, + -0.40505716219700255, + -0.6930443655493597, + -0.9813976085704573, + -0.7360819620284457, + -1.1529959644663224, + -0.8656009915075784, + -0.2427612915469738, + -0.6392172121445462, + -0.42633105995642157, + -0.7609253007715661, + -0.9950006896735405, + -0.27350319074846213, + -0.3160268665538146, + -0.7489774486375609, + -1.0809977645051227, + -0.5653446939848666, + -0.26615168421736757, + -0.5127200952012048, + -1.3666314180426133, + -1.2475545777598533, + -0.616464054712365, + -0.7185466755700274, + -0.2474961489402844, + -0.5358871740886032, + -0.8717067942363463, + -0.2836155927628996, + -1.19853343813622, + -0.5400603256264879, + -0.2288631814733291, + -0.7501076423873415, + -1.4699719811423335, + -0.7890913826175263, + -0.9701521527574587, + -0.3257063215515126, + -0.45336254863354086, + -0.48421400571150397, + -0.2405690543926533, + -0.6344562261528894, + -0.24839649536653374, + -0.4810725106690545, + -1.4935384331449242, + -0.7157446385771873, + -0.6397920175860973, + -0.30505657711529705, + -1.16198357702746, + -0.23933999252405433, + -0.24482093973862015, + -0.7081110866282545, + -0.7002867464769068, + -1.223038550987686, + -0.2605396617456338, + -0.30063591423409575, + -0.8187150269740093, + -0.3848993305646889, + -1.2183325350285166, + -1.0093227837495151, + -0.3275555165934239, + -0.399507382449355, + -0.21645334797841265, + -0.7247070175287982, + -0.41981192700042025, + -0.9565142985802385, + -0.3422452326217323, + -1.1556713720323517, + -0.45634941656183037, + -0.844709551206592, + -0.7538950601174578, + -0.6296978797542964, + -1.4347381130372006, + -0.30311306498033225, + -0.5266982738487129, + -0.5386502943447096, + -0.362922476544323, + -1.3329556168218089, + -0.35804997957841145, + -0.4013673040789533, + -0.6688298498949486, + -0.5697720970908888, + -0.3191866347195116, + -0.43885660957641376, + -0.3959627909774653, + -1.5645948276333896, + -1.0188494296741362, + -0.29722748010751043, + -0.633640657401843, + -0.8535651253069352, + -0.3552579086637678, + -0.6225598268285639, + -0.9614207408321954, + -1.3800710566312524, + -0.7330925982753927, + -0.7121897818982857, + -0.3991308627593, + -0.735425611401646, + -0.8408843579490463, + -0.3926027186388414, + -0.25218992765844866, + -0.47371448611874317, + -0.9008630664995827, + -0.3633164604254356, + -0.22906073089593176, + -0.21437676382549353, + -0.5044718788362506, + -0.8983591454084577, + -0.8429615928495171, + -0.26017280537312437, + -0.859719771122052, + -0.7752778040021799, + -0.20842130434274422, + -0.9198536833907975, + -0.22702805225241687, + -1.355631291358894, + -0.6835466657510968, + -0.25777138676575473, + -0.2774423211457491, + -0.25023998111143236, + -1.3906570814463357, + -0.9647416286982134, + -0.97768694687359, + -0.9283500058930366, + -1.0484091143024443, + -0.7614355423910678, + -0.762392947655599, + -0.8316715135881666, + -0.7142389103811334, + -0.25099092108682364, + -1.2745757687315757, + -0.7955371669863781, + -0.6781427702742234, + -0.3419059732386623, + -0.28312119327546675, + -1.0192963324609785, + -0.6614072842733179, + -0.9536783211291908, + -0.6723994882645923, + -0.2414247278716896, + -1.0180765583586793, + -0.7750281672680829, + -0.3318187683612985, + -0.7919240305492374, + -0.2886641597403637, + -0.5712178942870727, + -0.48114746773224765, + -1.0987484186306216, + -0.3475855433294879, + -0.4895625380407753, + -0.4702510630769326, + -1.1390628876683635, + -0.959014384131905, + -0.31381061774921226, + -0.8731902063941802, + -0.45815301045936935, + -0.28436046277714094, + -0.2719960623287275, + -1.396680322004361, + -1.7797871089713855, + -0.5876517184342425, + -0.21004172865691015, + -1.0280958045117057, + -0.38889784848897996, + -0.3543558217924965, + -0.2935031071269092, + -0.5642009300411616, + -1.1437673912426898, + -0.29634129102624246, + -0.9028428256599297, + -0.20923983497843343, + -0.5383044929624082, + -0.4010359094529906, + -0.660227227823839, + -0.7247269285033968, + -0.580336304512255, + -0.28746239554394126, + -0.6782389584152566, + -0.6991780060317895, + -0.6627858339175023, + -1.10913437662674, + -0.5385693461244758, + -0.46301824427490657, + -1.618884882245863, + -0.40110933041274155, + -0.307216625459662, + -0.9844940353827212, + -0.2986464881075322, + -0.4555085605264448, + -0.9680469036323235, + -0.3519991419310562, + -0.3141552675853244, + -0.8115390060435268, + -0.7759140518229922, + -0.5488091043234544, + -0.3681198532978529, + -0.4177551441848786, + -0.28446326726468, + -0.8924284935244797, + -0.292286619277757, + -0.46717295954451526, + -0.33961842016633337, + -0.6366397217494167, + -1.011850759239143, + -0.5926806664020942, + -0.21009434213918782, + -1.010133459007068, + -0.29686321911205993, + -0.35106068281647, + -0.3538518866321901, + -1.102910121720883, + -0.8953829248715487, + -0.8257197115475815, + -0.5007900831675295, + -0.7738231913152935, + -0.45309226552351994, + -0.43476985985556627, + -1.0360705291651258, + -0.2644449993575766, + -0.2831091160605731, + -0.26117979855887297, + -0.652365447358954, + -0.3812829336453554, + -0.5688687555289416, + -0.2369926331330552, + -1.0285053274856817, + -0.2874540872316199, + -0.40664361517982833, + -0.8293879589623984, + -0.5285847615497441, + -0.5724241976160207, + -0.7180336318535944, + -0.7316982227123767, + -1.3912819113721366, + -0.5111169298603642, + -0.39078206316940767, + -0.5383030463765337, + -0.3980047684138023, + -0.2144152703038702, + -0.7928883237622594, + -0.8056781857595667, + -0.3153667641197603, + -0.3078714212999093, + -0.26611552975830527, + -0.2037381840099488, + -0.23829288675150448, + -0.7577141891841254, + -1.4622238591418093, + -1.5616117466214836, + -0.5297344973167117, + -0.4223136716242548, + -0.6140896693527097, + -1.2618822906517275, + -0.8033409612741729, + -0.4751850336687551, + -0.4080747837318927, + -0.4069472776984263, + -1.1737908954963931, + -1.1065812426685524, + -0.8829646748791891, + -0.3136651767386116, + -0.7083097140805309, + -0.802179733860103, + -0.9422102135477, + -0.8611188550123218, + -0.27340871377371284, + -0.28825893175685313, + -0.28406622979729057, + -0.4380194223799718, + -0.7174862355758551, + -1.1704702039969488, + -1.1060054750513624, + -0.3576579104996863, + -0.3431997774229173, + -0.29324615777612384, + -0.6612130858677999, + -0.452068114130395, + -0.30291058418637307, + -0.2875025453869681, + -0.6584439303961513, + -0.30040284801460604, + -0.7831751207850745, + -0.5191545137548422, + -0.9657476272075103, + -0.8807594006480393, + -0.3070686695420407, + -0.27213661412121926, + -0.5401292997923068, + -0.2343166291816065, + -0.6666276394048173, + -0.2840827951890793, + -0.828676860190139, + -0.5309076615308819, + -0.23278698192932215, + -0.4310044421177131, + -0.23933144054308345, + -0.3112649998861224, + -0.2695282204114072, + -0.32284222131534285, + -0.9697264880423273, + -0.7081462620155281, + -1.2073663610957703, + -1.1900491148104562, + -0.5380975844298249, + -0.27592317675272193, + -0.6248568037208801, + -0.8753152996794129, + -1.0919040010963246, + -0.5855496271326724, + -0.9847409141910316, + -0.807274296761202, + -1.9897808526950271, + -0.6430345781126389, + -0.2787272455756592, + -0.6076692733222444, + -0.9498631138494014, + -0.2751929571495053, + -1.1296701314892048, + -0.755383493753338, + -0.24812942053172157, + -0.7553839710452334, + -0.5157997845659593, + -1.499315597178554, + -0.8768799935162778, + -0.9361822126243905, + -0.38238733163059024, + -0.6799045224036253, + -0.5643071989904925, + -0.3499374427427243, + -0.7236453170793025, + -0.7453740388266317, + -0.6149674870791754, + -0.5494401734773358, + -0.543671099559476, + -0.2967737776317401, + -0.7770155606022329, + -0.7554391982959938, + -1.283338702124485, + -1.5831917464142178, + -0.513589036405897, + -0.6509969142278373, + -0.6953229978584593, + -0.9179784041667389, + -0.2919434286577134, + -1.0529435953481032, + -0.34094015737446276, + -0.4084250972530872, + -0.5268779553786909, + -0.5869123825424558, + -0.3567109001678568, + -1.2106542667193558, + -0.6118258698937321, + -0.7665473934057613, + -0.8626614415344487, + -1.3229691455027872, + -0.474376839539152, + -0.6980773647493171, + -0.30391096478021445, + -0.42406039897785064, + -0.8122816191988927, + -0.5341968372446337, + -1.0872212846482272, + -0.2028634733192358, + -0.8322261620963708, + -0.3065597982301173, + -1.165948188401523, + -0.9585437080061692, + -0.25208767861409104, + -0.5357298918797769, + -0.24510811158270265, + -1.0198253051807575, + -1.4425672774667315, + -1.2302625507344114, + -0.4476918631773311, + -0.6143968763078463, + -0.8040049294747902, + -1.0010127054933387, + -0.5765924592183638, + -0.5958051335666705, + -1.1156867142074676, + -0.4359921079745948, + -0.30876411917508184, + -0.4262291092830039, + -0.7976979547773426, + -0.5011534864890641, + -0.5743915269508875, + -0.6471547525674538, + -0.7982267311289519, + -1.0354383251538968, + -0.8652273608327459, + -0.33435030150571116, + -0.2584177946703914, + -0.5822512881123472, + -0.31668258666906307, + -0.5901506579448658, + -0.9179904108965622, + -1.8152681058702538, + -1.4654522688997245, + -0.2633970548603119, + -0.5121404591612568, + -0.2565077334863895, + -1.662460015595612, + -0.6037600675626725, + -0.7415217718602056, + -0.5269810814096529, + -0.6737430540950307, + -0.8700232161432133, + -0.7176941256404127, + -0.38925462102905967, + -1.3021818133581036, + -0.5075819325015128, + -0.3297962363865379, + -0.5295362218821814, + -0.8696374320223866, + -0.29644823307087337, + -0.7222190791158442, + -0.307577292989515, + -0.8283302488474011, + -0.2569709692319827, + -0.43202868705145486, + -0.365010638456876, + -0.7344287195104522, + -0.6256958659836668, + -0.6132923590118926, + -1.184069872703831, + -0.6268808305819744, + -0.46265079026379125, + -0.2541813651067214, + -0.9871810421531187, + -0.35571642168124495, + -0.5337388868004607, + -0.5743820342053494, + -0.6684327963961626, + -0.38687192861715, + -0.29701102816577335, + -0.38468513736942334, + -1.0780258045328956, + -0.2795780467766756, + -0.5359243740762325, + -1.5431140623975035, + -0.5873463065163991, + -0.26825591012937705, + -0.8723597720812579, + -0.8050935590257212, + -0.7742133548493425, + -1.1030968287508789, + -0.6594084683792054, + -1.0836332397505144, + -1.7001441257372314, + -0.6423174084879655, + -0.4426103798807826, + -0.2959380083616301, + -0.8859408064918136, + -0.8963816021234561, + -0.7568016694913964, + -0.22441064774417505, + -1.316278192373074, + -0.5716826024744996, + -0.8793391859571835, + -0.6124078802135883, + -0.34879214143230186, + -0.748068810968766, + -0.478487008923571, + -0.9412379935093154, + -0.754996753692553, + -0.6245235940981557, + -0.6034885839958377, + -0.787536970996749, + -0.2638942902324184, + -0.46627108529051353, + -0.5307016845200373, + -0.8176373688791968, + -0.2735809040607612, + -0.3286197047583672, + -1.1219659443144023, + -0.39607358703506707, + -0.5164948520291891, + -0.45207852881645105, + -0.3188030246135507, + -1.40375967318222, + -0.2943613709156877, + -0.532611975349375, + -0.6104050793949715, + -1.2907183453545905, + -0.3005064318074718, + -0.6356235124611312, + -0.846871982558408, + -0.9728990691703213, + -0.8578234692413135, + -1.4639280420697833, + -0.24865543680737465, + -0.5968919167373324, + -0.43102682612226734, + -1.0929932985693305, + -0.9686981495077007, + -0.8353794206680378, + -0.7539078241075398, + -1.0489708890100196, + -0.6112447571258744, + -1.0353653816168489, + -1.2373938392852593, + -1.0367267209357323, + -1.7929265648830335, + -0.2388894836896256, + -0.6532274437524809, + -0.5903577764340018, + -0.42909493543950256, + -0.48607974124883324, + -0.9275189409635825, + -0.8388693908656114, + -0.4335678382967624, + -0.2745240661762615, + -1.0256509880953628, + -0.8567076396766459, + -0.6046556556684818, + -0.36863844783590827, + -0.207490771234569, + -1.1900692876867445, + -0.6670581484427758, + -0.6868430930271275, + -1.0267725462169444, + -0.6316851690608368, + -0.5563527391610054, + -0.5429638418387579, + -0.7368946355623791, + -0.27910032525355066, + -0.7362206812393024, + -0.482938645755997, + -0.9099466225241657, + -0.28070173811054216, + -0.770812930936476, + -0.9119891069424325, + -0.8389380347818873, + -0.8624283436124289, + -1.09152904614718, + -0.2688368224088475, + -0.569514145208965, + -0.46777858245349263, + -0.8413002437093431, + -0.9286831733987633, + -1.9958811976634554, + -0.7161886367054467, + -0.731708185612233, + -0.7637756224964625, + -0.5077034863307942, + -0.5688142742376682, + -0.24749595268460203, + -0.23929845457483165, + -0.27032644378675125, + -0.20393061294582177, + -0.2599918724334544, + -0.43165680577737775, + -0.5049593162755421, + -1.610732638871708, + -0.6496516340227911, + -0.4884516674887133, + -0.4042594532572308, + -0.9941547040910255, + -0.7049749165745606, + -0.3966344218601759, + -1.111765933866438, + -1.0655133942348929, + -0.7055979522199559, + -0.4168572378595521, + -0.3735464310995553, + -0.3085639643711014, + -0.9206242191119051, + -1.1642715402971646, + -0.23128267250407197, + -0.49533016191672896, + -0.5177085501752459, + -0.5609806255838585, + -1.1428129264669347, + -1.5105168852126813, + -0.969916749914127, + -0.3581913872323853, + -0.5632332834613265, + -1.4990063855235443, + -0.6988880428919695, + -0.28370415369897256, + -0.7974434492411461, + -1.288420856811707, + -0.21861580045707657, + -0.34932347042822065, + -0.21669049695263018, + -0.6169262716393957, + -0.6534093444602013, + -0.30841416424532886, + -1.2929845309453183, + -0.6607463887318752, + -1.562482247436171, + -0.38368327106279976, + -0.7736142824011665, + -0.24260983916720788, + -0.48105240270088895, + -0.9387118548836461, + -0.836675172748161, + -0.8065711494315726, + -1.344893888364483, + -0.36300011795192777, + -0.2601788869855492, + -1.2416811744081233, + -0.3189560900812117, + -0.9859509545628956, + -1.102764087243575, + -1.1260870611343654, + -0.5943557172631652, + -0.6605170822545112, + -0.46960233861809186, + -1.5590486364056548, + -0.932576555651072, + -0.3055174695380078, + -0.6640516018175259, + -0.8410592922105967, + -0.4170336792707307, + -0.6408958974822886, + -1.4932135730672282, + -0.4391866315109704, + -1.454994107395412, + -0.4763013617777959, + -1.5419415698959453, + -0.2770917404107333, + -0.6197623855125372, + -0.9428929872622183, + -1.1596732067927158, + -0.3478082568749419, + -0.47548414325528177, + -0.6448866151743431, + -0.2387592055706935, + -0.580711439450632, + -1.4323410954024338, + -0.3201776548490762, + -0.5205118226933363, + -0.5022307607496819, + -0.7945493357526139, + -0.49023238802133046, + -0.5245119605647542, + -0.5557900349736439, + -0.6386343962466674, + -1.4535252164026125, + -0.6267729363604151, + -0.267470039788324, + -0.2799741568017144, + -0.5842307502872264, + -1.17872760583225, + -1.4081787692921874, + -0.8689311106764386, + -1.8595960820127948, + -0.4217220870068451, + -1.0003476477670055, + -0.38968916859502384, + -0.5375231275621313, + -0.7947767187832846, + -0.5101096230550086, + -0.4751748425129518, + -0.7652697165948847, + -0.41486371661586424, + -0.6838886770040754, + -0.2292322698043449, + -0.4934384236100036, + -1.6552801556309025, + -0.8282593460958005, + -0.4999195082217399, + -0.5480212462286768, + -1.2984045959801669, + -0.4411694963065816, + -0.8173507473292577, + -0.4065728025761615, + -0.6265613470289627, + -0.9761615745140632, + -0.3721435062399031, + -1.9725965923125868, + -0.26810093581585404, + -0.20635607835900877, + -0.4494854902367124, + -0.5579385791001307, + -1.606498602866946, + -0.6102311613986993, + -0.35407206418847637, + -0.6751733997045777, + -0.37596199664421526, + -0.7900158106553843, + -0.301196642543707, + -0.6925387614190583, + -0.4444543132015372, + -0.5371576425257282, + -0.22656520744742112, + -0.6102273277369515, + -0.5178653861883055, + -0.5096601587849471, + -0.5675795794442279, + -0.22159936355882642, + -0.7050228782602587, + -0.591164704346639, + -1.0489998483928467, + -0.37840603864333866, + -1.4849363551136896, + -0.3318541292020208, + -0.30812132483552984, + -0.9594916400114207, + -0.3779769725951538, + -1.4393058564849268, + -0.7883289075650298, + -0.9230661425538238, + -0.999847681338952, + -1.0682331707134043, + -0.9461651806562631, + -0.34739239919906223, + -0.6321677219417102, + -0.6313811557601273, + -1.1002036757994993, + -0.9500882933157937, + -0.2821349527090568, + -0.5626205440298733, + -0.670924812522318, + -1.2357539434925202, + -0.2552384426662976, + -0.6911109605424093, + -0.257212523323354, + -0.5295297709029414, + -0.2224338001722556, + -0.29665556402449844, + -0.2546103331433394, + -0.9613603199984625, + -0.2186847234748608, + -1.1733316417590223, + -0.4401121640035059, + -1.7506696399532433, + -0.4090259727657417, + -0.2877660354465133, + -0.6741138844300896, + -0.3240833337803402, + -0.3222659474152339, + -1.4814457745785397, + -1.6796881519630116, + -0.7520149686190924, + -0.9380979973754041, + -0.5588520398421948, + -0.201182943575911, + -0.5193025269039411, + -0.493028279461428, + -0.9172003056739767, + -0.441936686968745, + -1.420200439729663, + -0.776958473771793, + -0.8716207123707725, + -0.3397442847102387, + -0.4481601199883171, + -0.3020430101045461, + -0.9036509340823214, + -0.8280531110572412, + -0.5558980131457829, + -0.9259831478511037, + -1.586664096197673, + -0.21490746167992208, + -0.886163271430133, + -1.4560620746888013, + -1.1599990459518044, + -0.5862145217044972, + -0.47146970370280555, + -1.379220573781482, + -1.0555633584736612, + -1.2297595589314603, + -0.2671992945021185, + -0.8700986155502011, + -0.43444085542688043, + -0.4469321890989135, + -0.33389348713363715, + -0.7020818201296098, + -0.6085442773148801, + -0.6098520140650299, + -0.7247538596760932, + -1.635544179628393, + -0.5282545740143545, + -0.6503245660600983, + -0.28956134575784936, + -0.22447852112363323, + -0.2533306871476994, + -0.6125867929932611, + -0.9266845702417668, + -0.6508378074269082, + -1.058024330425836, + -0.3742317457782138, + -0.8819947541593699, + -0.7487106593865985, + -0.7341755302728157, + -0.8921654328792021, + -0.6835939686824664, + -0.5293401219034343, + -0.2667268644607097, + -0.41131142182289804, + -0.357674223606479, + -0.48394940809416737, + -0.5507322622642082, + -0.741806710383485, + -0.2761987982037311, + -0.4084373233625869, + -0.45181272841807923, + -0.21305702511015623, + -0.8929024429455792, + -0.6281750146103076, + -0.3150671247513855, + -1.2987176231019195, + -0.44768600783205814, + -0.3679067522557664, + -0.4078572546039115, + -0.8143034211961564, + -0.30563536944389724, + -0.419481004536434, + -0.8817139356859641, + -1.0994418192967574, + -0.4629312837821379, + -0.6716382910251605, + -1.1729604160659024, + -0.7319736279489256, + -0.21470209645396854, + -0.7199317046590474, + -0.3759959868104351, + -0.3047310675129512, + -1.088477916986753, + -0.6812172759738525, + -1.2761815060739532, + -0.3131780084970901, + -0.2812940665288161, + -0.9845054280368345, + -0.8479874703433321, + -0.5948303291677797, + -1.4533214154490963, + -0.8786188711444478, + -0.3846599762461576, + -0.5135940855524138, + -1.8267139769903806, + -0.2080621778074839, + -0.5156425451788279, + -0.5773333229671358, + -0.6887318114047258, + -0.43244381907067014, + -0.23672161876447, + -1.0486981670384354, + -0.44836243066855047, + -0.39428450718434116, + -0.7842418774427746, + -1.14362006983189, + -0.4270319592746681, + -0.38586052998241166, + -0.39950393351188124, + -1.1663219174965205, + -0.24218658957004094, + -1.3462560109332171, + -0.23535196977575573, + -0.3429804965638273, + -0.3306426791857928, + -0.8265524822779132, + -1.2571102418600568, + -0.5337119513063805, + -1.1584991533456188, + -0.29068899728910974, + -1.1652735606475306, + -0.26843793846659103, + -0.25117512341407916, + -1.6424589198802286, + -0.702470506316104, + -0.9652970702557697, + -0.40224353877525293, + -0.36692647513461596, + -0.21897113724151382, + -0.998535780657996, + -1.1962022969587598, + -0.5563355503521904, + -0.8959541881714914, + -0.5373798138995106, + -1.2507939284064582, + -0.8331500405224929, + -0.7591545197946451, + -0.2658269013713754, + -0.35812790174211173, + -0.5836485029807081, + -0.8256034971161229, + -1.498641347533367, + -0.46499462415257425, + -0.3166643697970235, + -1.2834719460066282, + -0.3004513862398344, + -0.5750381478414563, + -0.7265423627180173, + -0.6516545961124778, + -0.24462704581560943, + -1.066012590908274, + -0.3386088871743873, + -1.032326762502952, + -1.0578942231636537, + -1.0153329628542591, + -1.23740396413123, + -0.5153050142591572, + -0.7856825945620584, + -0.49368849260885483, + -1.1218959509939146, + -0.4968329105797578, + -1.1436799402434321, + -0.49976772041129425, + -0.650698267990671, + -0.9942429801415577, + -0.5548558211418075, + -0.203127979369022, + -0.32959468264461966, + -0.6003947858491261, + -0.26042100243361066, + -0.30004465312617373, + -0.908207919323979, + -1.205214463189734, + -0.29834737953763824, + -0.629413466165527, + -0.8151812439736981, + -1.8074809542419066, + -0.5374849533087332, + -0.8429608906831211, + -0.41319442473628276, + -1.1847345723859337, + -0.5354308444765592, + -0.6704352871073086, + -0.43396286119415306, + -0.6941815257172306, + -0.7507713457377471, + -0.4269354939707412, + -0.448535237590818, + -1.0979743736105028, + -1.3494667430681797, + -1.3312816465582038, + -0.5264348450454477, + -1.1715491881607094, + -1.1487786501272503, + -0.22792969911915936, + -0.4873520487482539, + -0.47057393102476364, + -0.2812146743973157, + -0.35858524948130266, + -0.34386613231560337, + -0.6222455866411243, + -1.0675868482721986, + -1.3315057428797163, + -0.7239152473168079, + -0.644751626360296, + -1.3187722697100905, + -0.9006980603029969, + -0.2766060143899891, + -0.9123847144074991, + -0.8231534870900515, + -0.7706075934735822, + -0.9121015969286436, + -0.425342249770658, + -1.22240797612222, + -0.2630426615517287, + -0.38746330506424737, + -0.7604220331602157, + -0.7489715448813649, + -0.9383190095223215, + -0.2008392755496483, + -0.3181806244726484, + -0.262682780340517, + -0.24433435454013536, + -0.2883576130198052, + -1.3554328071500097, + -1.5788273549738896, + -0.5414368192753883, + -0.21928768886599773, + -0.9460431380175108, + -0.22620053584497157, + -0.580082419641814, + -0.3344022158290913, + -0.5171751733837753, + -0.6110236171821302, + -1.0982984373578086, + -0.8192459984422091, + -0.507943421117049, + -0.2622099040443325, + -0.4231684748899264, + -0.42493337856689284, + -1.7963522962800196, + 0.9574566286662496, + 0.8452006093525763, + 0.5381869910569269, + 1.0908371057629391, + 0.6790794817441974, + 0.5651151138455784, + 0.35454590617822496, + 0.5466948480212497, + 0.6218349416883081, + 0.3115133516999475, + 0.5425184428395773, + 0.7442684791257564, + 0.21993476312292834, + 0.7260605882590383, + 0.9053118056094364, + 1.0609085263276188, + 0.23513999602928365, + 0.4006005948756904, + 0.2604588315848138, + 0.20260214017438796, + 0.24685332213569072, + 0.6508624322024467, + 0.42201461324824896, + 0.4198741845662263, + 1.3029314737138313, + 0.29055243089268484, + 0.42152498144938577, + 1.5464953864088424, + 0.8513514282915554, + 0.3121066981864419, + 1.1232705035603128, + 0.7915034864136219, + 0.6154432954740279, + 0.5576726416515835, + 1.5234880358698861, + 0.7879524995569577, + 0.28082433767146153, + 0.3538364683545442, + 0.5283913797118495, + 0.5933731700961553, + 0.22643865349509118, + 0.4828430233943823, + 0.22388517795251095, + 0.9690547149315686, + 0.5752769988918115, + 1.0913876150230986, + 1.0892193802768084, + 0.44777009525791034, + 0.7715762202929868, + 0.9936748193871465, + 1.0758017948311758, + 0.25263094699899447, + 0.7009412318065368, + 0.4698893086143426, + 0.5195608930995894, + 0.45428634889416514, + 0.7880721499922141, + 0.34786401796750877, + 0.6532018364612721, + 0.7854829005414233, + 0.48048580700219884, + 0.23813521558432763, + 0.48909638433752445, + 0.6192776568160028, + 0.7391312085806514, + 0.6622958625104529, + 0.6969813464137515, + 1.7117270185256614, + 0.8283996723027968, + 0.839059146959328, + 0.8777243842844908, + 0.3826864433275716, + 0.322916125791419, + 0.3161834910440166, + 1.3485738342330102, + 0.7789692008870123, + 0.6468764900824704, + 0.2815925431319182, + 0.6410875451951364, + 0.43765108872838915, + 0.7029992812570973, + 0.2570613856472874, + 0.43618816931899457, + 0.5335699992174628, + 1.2993100530697281, + 1.0230767468501865, + 1.1015684396623806, + 0.29464353218682215, + 0.6560230636025929, + 0.8404053024136257, + 0.34348965585744995, + 0.278458508579929, + 0.6448471167097874, + 0.2617147175657952, + 0.3355228140462228, + 1.2072886992105643, + 0.36444724599635214, + 1.412030457363343, + 0.9400898755750868, + 0.4037347709834607, + 0.7549820066897852, + 1.0963580958947505, + 0.8858613416146282, + 0.7070685344858586, + 0.5467258272662279, + 1.1256865208832245, + 0.8338835985177124, + 0.37824131324718246, + 0.56069609748268, + 0.574660433573703, + 0.2944841167685757, + 0.39789473517316426, + 0.8346370846409534, + 0.5176385495505529, + 0.203716187983909, + 0.21019599703084274, + 0.22862542006067832, + 0.40360200930625606, + 0.4660638417941213, + 0.39934112358188173, + 0.6382148826012658, + 0.4787518496815889, + 0.2712153204282209, + 0.8868437855638998, + 0.5214051825097152, + 0.2051632776254155, + 0.6001772116758128, + 0.7576104488153601, + 0.3334769648034673, + 0.5837173447705857, + 0.5039571565892099, + 1.414289037222642, + 0.7552596388029804, + 0.7967894503579123, + 0.7655283749181111, + 0.27666833073043434, + 1.000635657598225, + 1.2796923551345631, + 1.2504400556452653, + 0.7661439522476414, + 0.9225960503810428, + 0.2965091323830521, + 0.5631401417102043, + 0.26969374081711245, + 0.44364127633774875, + 1.4312745497983717, + 0.7179400526036637, + 0.5713385164330006, + 0.30918501618996486, + 0.2114352305958326, + 0.49878668015699273, + 0.21490690031594514, + 0.6532083717334932, + 0.8148505692908088, + 1.264571158158868, + 0.5764929253081038, + 1.4508655763789022, + 0.9649103611248816, + 0.4135835113901947, + 0.3009580582692032, + 0.35782800731633896, + 1.0224925763737003, + 0.37946309951188056, + 0.6560535969094392, + 0.7254228201703601, + 0.3490267328022806, + 0.35463015297197975, + 1.0903125611982558, + 0.8692323013798404, + 0.2651975560673788, + 1.4656570615967752, + 1.6730433943660614, + 0.21036291884223482, + 0.9021022446387799, + 0.6209558270641999, + 1.1071878993543476, + 0.3677190653383894, + 0.8498189417643197, + 1.0311529853234347, + 1.409722882489602, + 0.2546404303136566, + 1.0554062578784038, + 0.3198891373276655, + 1.2224420571901917, + 0.6701953692678642, + 1.229123223141898, + 0.7477184387669606, + 0.820864099116711, + 1.3699896348511267, + 0.5113525826652402, + 0.20528735700177222, + 0.926211737782468, + 0.7200551581091819, + 1.3990374493720916, + 0.7817645773552057, + 1.2344853621430394, + 0.9809936857257535, + 0.22032478083878332, + 1.3072427774745725, + 0.3883035761723866, + 0.4041603773604231, + 0.4950573882457931, + 0.7891107256768725, + 0.4879849305613825, + 0.6762011441254779, + 0.5066216683422085, + 0.3029807660366283, + 0.6259278309087696, + 0.8005565651344673, + 0.49179205270167775, + 0.386917375588718, + 0.43856873644674976, + 0.7569245793444163, + 1.2509864127661456, + 0.64839351496744, + 0.45372886127963274, + 0.21884375711922308, + 0.8470153711751681, + 0.804284364905372, + 0.37754064595919684, + 0.9975284797642118, + 0.46733686454720025, + 0.6885954231935355, + 0.6471174453194675, + 1.184869487267471, + 1.2522572229763866, + 1.3892522115700534, + 0.39968426834572446, + 0.8621892162607182, + 0.6085867192959183, + 1.2549287316881088, + 1.3399074829311493, + 0.8899365608150395, + 0.824966125963163, + 0.4837617699584297, + 0.348885563351981, + 0.7339314288144785, + 0.6118335820318119, + 0.9346170849348651, + 0.586547864252241, + 1.005551011249285, + 0.9341137372839733, + 0.25644166406112817, + 0.5882506155412772, + 0.4826038650271428, + 0.32408333979845116, + 0.8792329233654419, + 0.7853108180466295, + 1.5952393114369576, + 0.5704230952842605, + 0.2647647032612503, + 0.6519305841454981, + 0.686861567877312, + 0.3789221752821911, + 0.6132546161462723, + 0.2584881244269224, + 0.8381829655088612, + 0.5424023977982627, + 1.5795470519468604, + 0.3275123357337015, + 0.5304314785882482, + 1.2622506504490736, + 0.3627633280194873, + 0.24092526319262303, + 0.6606187195380192, + 0.45403459382476014, + 0.38397506954553157, + 0.7472963199469107, + 0.47726341597163224, + 1.1033444565064954, + 0.7204347301757275, + 0.40472082646861873, + 0.20317934742709134, + 1.2140775037484786, + 1.615311641448989, + 0.41172602772324124, + 0.6664053356726795, + 0.2909591767119319, + 0.38333325830448844, + 0.2023014353089582, + 1.84855301762629, + 0.47498528325529354, + 0.5157455256030349, + 0.5541804897514477, + 1.3052285160148664, + 0.3616385490187431, + 0.7260943995236316, + 0.957511370076901, + 0.8742688186137921, + 0.42699419040599446, + 1.4595224120376145, + 0.7703320718866764, + 0.9652592186007292, + 0.5819303289421425, + 0.4145312883621509, + 1.3059854779410622, + 0.5065134398644039, + 1.30691980010619, + 0.7743456734072737, + 0.9253198107959261, + 0.5281256793834148, + 0.28466129300496035, + 1.456178353399288, + 0.4990188300179854, + 0.2362977293259614, + 0.43983212761640245, + 0.5606833580571268, + 0.989393047743935, + 0.32840635356742826, + 1.172005027908928, + 0.37851791195705853, + 0.23281401988542547, + 0.6001717870906326, + 0.21024124978558695, + 0.31179724942954024, + 1.243915917284963, + 0.3711495441593481, + 0.5944184507269621, + 0.8067991011872107, + 0.473847643811217, + 0.4874382478872303, + 0.6025517429245429, + 1.0780856217106396, + 0.7390998162079477, + 0.28310229715602026, + 0.3577790100763111, + 0.3728837012434968, + 0.7007498454311625, + 0.2811605561051045, + 0.40099405884109984, + 0.5898582817073846, + 0.2313552354194825, + 1.1919395258218959, + 0.5176433707344448, + 0.5338258709314166, + 0.624087364088595, + 0.6173991589962241, + 1.294029188820565, + 0.7173283929981592, + 0.8322451365535483, + 0.47503876741649287, + 0.23772719618893487, + 0.3539435763213408, + 1.4000779884951273, + 0.7732992553006718, + 0.8342927445253526, + 0.46768617898219617, + 0.23456122645740163, + 0.6407046782122071, + 0.33562196121643506, + 0.5159099607935026, + 0.597841195172127, + 0.46513493105215015, + 0.20611274678492397, + 0.6088002539123291, + 0.4737131839584327, + 0.4319659276100964, + 0.8098613243975006, + 1.1925663157442883, + 0.22940566964619552, + 0.5165795278122439, + 0.5669022050464676, + 0.28849241703361284, + 0.5286574860279524, + 0.4180936131938474, + 0.2836391551480662, + 0.21134197537472554, + 0.22282071687315885, + 1.0004026242554909, + 0.42350230864533284, + 0.20450564187177026, + 0.972275890044683, + 0.7461244781633901, + 0.3250266455550464, + 0.4176090096260401, + 0.9451574297409183, + 0.5135989003909712, + 0.3602867220780169, + 0.20480252737958168, + 0.7902760376150025, + 0.9000234980128027, + 1.3113880785927463, + 0.7275469927630226, + 0.3993734238014008, + 0.35778351898877025, + 1.4158903358632204, + 0.5172276062304884, + 1.3113957572317845, + 0.5160812090966342, + 0.7941081557393654, + 1.0373430695221066, + 0.3890784971860782, + 1.246899608409073, + 0.8503706153538606, + 0.6042486332089417, + 0.3435235590076014, + 0.2900916059756735, + 1.0636608010656947, + 0.36801132984675666, + 0.35534890370094685, + 0.5665904043289018, + 0.5791313473915215, + 1.4159678457424025, + 0.28884280921947175, + 0.24966673179295626, + 0.7262791641182215, + 0.20614235421732435, + 0.7271769354406236, + 1.1481632060005469, + 0.6957152491109738, + 0.2086332022103553, + 1.697928855493378, + 1.1440960767294506, + 0.34116178470218855, + 0.42405879701331584, + 0.2217798708984228, + 1.3059930262318333, + 0.5290341853331506, + 1.269519322757612, + 0.2705601941497805, + 0.8614685314297387, + 0.43758739337482866, + 0.3014343073347495, + 0.6088279094516951, + 0.528108432969738, + 0.4705588863604607, + 1.0210524037239876, + 0.5445686834365939, + 1.027033640702382, + 0.2628912193617715, + 1.2026733769231976, + 0.40851019053983184, + 0.7912714445686881, + 0.8955915916169779, + 0.4039613800605166, + 1.3150543732643323, + 0.7500998085500262, + 0.2303319019720767, + 0.7035473918331037, + 0.5228325080489442, + 1.5836350163993762, + 0.21945968298445498, + 0.5179707472301679, + 0.4944175223716443, + 0.9251376372732607, + 0.7727510183969444, + 1.1335525066595933, + 0.6595898754506855, + 0.3122703473705428, + 0.3444241055611415, + 0.909550242086398, + 0.23543556929441273, + 1.1501691109264751, + 0.47791619693623394, + 0.2922098753778981, + 0.726629773740369, + 0.32911060142106585, + 0.2960246825754587, + 0.7003777162027437, + 1.1959713967130627, + 0.7471884161171929, + 1.0431700295497481, + 1.3097345240832052, + 0.7654266215269551, + 0.7119784976482181, + 0.579916658673169, + 1.0755268044770794, + 0.3193229669950994, + 0.7955561860515897, + 0.39705023298982306, + 0.5928470740551763, + 0.7920716221355942, + 0.5671521419525674, + 0.7386338117216724, + 1.196293311536803, + 0.5453385844547564, + 0.8962567950539333, + 0.5445462907057793, + 0.31375000499196865, + 0.7766149560131683, + 0.5238973443202292, + 0.38454857881836446, + 0.21923927911480684, + 0.5627060534251433, + 1.1544745529223215, + 0.3790603053223351, + 0.5992635725382975, + 0.5748319976939346, + 0.24094746122490637, + 1.6716782436782727, + 0.28675221432483905, + 0.5458010670365312, + 0.871176025098844, + 1.1193963480392053, + 0.4100482994552548, + 0.5518252569612714, + 0.5097018619724024, + 0.5627908798263588, + 0.7976593552902981, + 1.3396562620643613, + 0.3442492162902713, + 0.20531417114769307, + 1.2118394642412438, + 0.8016574849456434, + 0.45056765666197246, + 0.2706071729435616, + 1.0411483507454287, + 0.3886727191086522, + 0.3087527341453821, + 1.3952242504131547, + 0.3733256141766607, + 1.2520014052619566, + 0.32834047086159857, + 0.315692570824261, + 0.21532204651472034, + 1.9516659762727115, + 0.5761733587400643, + 0.9332755884251912, + 0.6221687450469235, + 0.5917991474575786, + 0.35878410553787093, + 0.9879370613747579, + 0.9701003174868047, + 1.6341196745551518, + 0.6350845779977535, + 0.2499257163288318, + 0.36766439446669835, + 0.878491131360003, + 0.9118127761249339, + 0.7002750808645333, + 0.371920539241359, + 0.45135927545625326, + 0.5201290206766541, + 0.8902009998740784, + 0.3626328343051131, + 1.3409566250319613, + 1.2797143799292812, + 0.7982793105570495, + 1.0091685350842403, + 0.7775009672234319, + 0.2632343645151207, + 0.8545888147531404, + 1.119554264480485, + 1.4404303303636667, + 1.0363822140514782, + 0.973717690938325, + 0.48684517017957807, + 1.2352696556658376, + 1.2698181074875674, + 0.20291866941805534, + 0.22420980157360365, + 0.22692888246136753, + 0.4135056023979652, + 0.59393488941513, + 1.006592796764644, + 1.0159948225648485, + 0.7896563392614534, + 1.4954035083249189, + 1.526362458179763, + 0.31166363262058466, + 0.7375895767706929, + 0.30563839904385176, + 0.3343060319987976, + 0.2775593965038207, + 0.4594775218787838, + 0.24177283697141985, + 1.2243257273705201, + 0.96237395726785, + 0.2290762955016808, + 1.082674470844413, + 0.9991236782835821, + 1.2532241680411975, + 1.0286048260537586, + 0.23633102832962724, + 0.7095582124319062, + 1.7675797094603882, + 0.23368960725240603, + 0.8048395964198543, + 0.35910957979019487, + 0.6000903514785368, + 0.23819172572204608, + 0.29736829293040873, + 0.20832399817263714, + 0.21874825943807294, + 0.31612482060882524, + 0.44075557140301497, + 0.8590801598409095, + 0.295574234532831, + 1.5032675299341767, + 1.3852703819354009, + 1.705559717177896, + 0.23134126272120228, + 0.30183831167922354, + 0.2635628752157854, + 1.092509387668705, + 0.8747172522541206, + 0.45796723763430264, + 0.49358293026711, + 0.4678149383940908, + 1.0211030472609126, + 0.6054625575788924, + 1.1882743370653301, + 0.22708829587256465, + 0.46325250295097853, + 0.26122641811761993, + 0.6038481661913055, + 1.4442601646182147, + 0.8244496946634154, + 0.8013260001292307, + 1.026956362664576, + 0.5539869558010504, + 0.40178211815053433, + 0.26567374936723503, + 0.9831368746304032, + 1.3002607586956298, + 0.35061244608247066, + 0.49334228697351185, + 0.8759645702775107, + 0.7932426379219194, + 0.7033019932183031, + 0.5847099219174675, + 0.39995263242887047, + 0.5330072835639627, + 0.5509692946718121, + 0.32612521190091, + 0.36330455385038407, + 0.37524862893057304, + 0.5710238215732425, + 0.5550635116098916, + 1.5130346965063923, + 0.40072895706582506, + 0.22342975612850163, + 0.5872052018877083, + 0.2954280471212256, + 0.3140590221649693, + 0.8452350939866705, + 0.7223423178618025, + 0.5810117788190293, + 0.32510482639101523, + 0.8707261550513209, + 0.7858539944878898, + 0.5086886817344548, + 0.7259365053614426, + 0.7491530218028426, + 0.21585718952989874, + 0.6565578411599791, + 0.5203389615562455, + 1.450910251667492, + 0.5744805122051686, + 1.0204315285397332, + 0.5590631444317324, + 0.4253768348687382, + 0.6806585113989716, + 0.7051820698530837, + 1.3423268701620215, + 0.5045370857914087, + 0.46800253987644574, + 0.6005469093925546, + 1.271433723321464, + 0.3389619210158223, + 1.065602533215407, + 0.5558917121688575, + 1.7597621715878258, + 0.6682606676737181, + 1.2064680700527817, + 0.7627270163597215, + 0.8720929339421755, + 0.6258018604073541, + 0.6447802843961272, + 1.5335875836798303, + 0.43391917710213906, + 0.5644756919134531, + 0.4467522631582906, + 0.29327791069396103, + 0.24895691611962015, + 0.46328044090128245, + 0.979235425536783, + 1.81272169886208, + 1.100259111334818, + 0.29393678152668745, + 0.7599736489100056, + 0.633242238792645, + 0.6951910227995021, + 1.3272587927780841, + 0.48432163133500483, + 0.26034995143763456, + 0.2983891752571571, + 0.7847468110776195, + 0.7502064015293173, + 1.7788950633061467, + 1.2111462822996888, + 0.6711541952440424, + 0.3651937497774154, + 0.4743986786552055, + 0.8107566235795505, + 0.20936651294691735, + 0.669440502819163, + 0.6774497183601299, + 1.1366579483706303, + 0.6642354509226619, + 0.2918987162438312, + 0.4633085147002086, + 1.2309177467192836, + 0.44606281126852027, + 0.3073198456980928, + 0.25004613619793425, + 0.5869146536655406, + 0.5764916308702127, + 0.33281855126688237, + 0.38934628830606927, + 1.4843018999333173, + 0.47854654899276733, + 0.9131758749498516, + 0.47537143439899265, + 1.3992096801444227, + 0.290585711915039, + 0.49805235024403627, + 0.4137084740374465, + 1.313162486792877, + 0.3735379180241846, + 0.20868736565120488, + 0.577810824021978, + 0.40434303404114613, + 1.020212764447325, + 0.5057704235149058, + 0.5364045757541845, + 0.2326628395095914, + 1.2715730555347113, + 0.4857992784112809, + 0.711504067774769, + 0.38957675980591816, + 1.2949760537303538, + 0.44781281029036196, + 0.45509055371471496, + 0.24855509310356622, + 0.4157311352486839, + 0.35788738533554565, + 0.38020100439381516, + 0.2892235425354156, + 0.5070133893323865, + 1.2383430472749593, + 0.9437768700831429, + 0.4624298679475328, + 0.2737816601389798, + 0.6387806329524005, + 0.3250529789855941, + 0.7366866125807473, + 0.9986654009088966, + 0.6373615593163735, + 0.5076290976548747, + 0.21518358050328779, + 0.7620298032399668, + 0.5734140939515348, + 0.6489086845971223, + 0.9352813405268431, + 0.22447747686168662, + 0.36965044518165907, + 1.5177772006012886, + 0.6872346843267376, + 0.5419042579087296, + 1.0958955336020066, + 0.4458119837912585, + 0.2107323816419524, + 0.7340220790468132, + 0.6990389739417066, + 1.0782921720481375, + 0.361084586879682, + 0.46796891341791863, + 1.5722203834420831, + 0.5265558911097354, + 0.2645587297374444, + 0.38708620139554945, + 0.8314212135249325, + 0.7756967995131574, + 1.2046853589842803, + 0.6706509592405848, + 0.3536426615169036, + 0.3806884841787056, + 0.5178218160923329, + 0.6513185705602266, + 0.3553068757203762, + 0.378664304614536, + 1.440307958612511, + 0.3750323597162434, + 0.7415707992802925, + 0.7172043678039197, + 0.2914804818710285, + 0.8933033886766218, + 0.49592046512422217, + 1.025948940377737, + 1.0019960639385428, + 0.44655962204601507, + 0.2660976260221547, + 0.6586777564327124, + 0.7119218368773236, + 1.0308939675039306, + 0.24527640456837885, + 0.45976157650587235, + 0.8751011531211884, + 0.2083462443456029, + 0.7674802686158455, + 0.6866265231328932, + 1.2481390897697064, + 0.48924856276139556, + 0.6586305781031929, + 0.207080936128153, + 1.4061215557817341, + 0.9432397638743181, + 0.42018467496853706, + 0.2637564684792768, + 0.35203068416216093, + 0.5787117042283616, + 0.6801751806479929, + 1.2603420581515123, + 1.0303020572227184, + 0.20273025472221803, + 0.8839963427063044, + 0.8483304156847314, + 0.389617241067535, + 0.2602353563842738, + 1.384886514078825, + 0.6993005783570335, + 0.2511645607798125, + 0.20765048948881284, + 0.22883381884611836, + 0.634107367534222, + 0.5860493896702492, + 0.29486670208775356, + 1.0902412767315657, + 0.6273045974991331, + 1.161781453106763, + 0.3143026185888674, + 0.5794499923261057, + 0.47897906557721476, + 0.6580197953000037, + 0.38298298737969916, + 0.4762643438101567, + 1.3104745231806398, + 0.5424266950629147, + 0.4927663156701303, + 0.2784194126926202, + 0.28843314558204924, + 1.8852015696359423, + 0.7660990053460904, + 0.5397920839874201, + 0.44566271165036386, + 1.1627380098761648, + 1.592488937567565, + 0.4087586856898832, + 0.924938629947583, + 0.34983204859923167, + 0.3893675151164049, + 1.6583058817363978, + 0.629588187583269, + 0.6650988326920615, + 1.3768711316204871, + 0.626065309514586, + 0.8163207745290841, + 0.799609367512955, + 0.3387796722744442, + 0.8069506245053368, + 0.4377716442189288, + 1.0371174246475765, + 0.27298730999355114, + 0.2787648445190082, + 0.31941665402933644, + 1.1811413243743805, + 0.5189381021166993, + 1.3518935355687622, + 0.22090692479600046, + 0.4380013877298683, + 0.784257004359925, + 0.3405555178959765, + 0.8479628509914472, + 0.21136291822323117, + 0.24288951681927556, + 0.7444312812912665, + 0.27444034961374725, + 0.6222203294839865, + 0.3676641024231905, + 1.0744655523817392, + 0.5895820432256041, + 0.4719685428803768, + 1.1426377913449075, + 0.6732884635547844, + 0.2794220815990219, + 1.362557589168319, + 0.9479535435531543, + 0.9410710774170153, + 0.3776505171014156, + 0.23193420713197496, + 0.598296258666808, + 1.0685904163629358, + 0.7116199100970657, + 0.3927253201831486, + 0.7101748325086363, + 0.36372481794051176, + 0.5291048016401386, + 0.917592478877433, + 0.690213055057936, + 0.41878942872922637, + 0.4184534736152045, + 0.6696086782789128, + 0.942798835743784, + 1.4415591805747652, + 0.47271665137846025, + 1.023469215133509, + 0.901197800753228, + 0.25887708837972756, + 0.5128150883372361, + 0.2526154819336506, + 0.28065008408849457, + 0.4874901659757395, + 0.8465523884482168, + 0.8226488738081086, + 0.6166181016222554, + 1.3631429140502773, + 0.6993464904701152, + 0.9597754451425733, + 0.3808277617199091, + 1.297844758175944, + 0.7082825498026382, + 0.3617155265839857, + 1.0051211171732573, + 0.4598970298164315, + 0.3440103371818209, + 1.6660593775128, + 0.22035559326704476, + 0.5064224492177815, + 0.3329198599188626, + 0.5160263418319516, + 0.5986631894526262, + 0.6281252724560316, + 0.27116549085228164, + 0.2337481504235625, + 0.2216077768553763, + 0.388137822203219, + 0.42306879697733474, + 0.43710181215514027, + 1.6145276477954429, + 0.3705731210486874, + 1.1609102534539393, + 0.4709766683224439, + 1.121093561285424, + 0.7660154114124668, + 1.1273553957738323, + 0.7680216023662017, + 1.2332946882156983, + 0.29245908561265116, + 0.6034638229444547, + 0.3755648357767191, + 0.5413423715186092, + 0.22382851574559567, + 0.20277733618773866, + 0.20209393914304727, + 1.3683195932110424, + 0.3867614155442177, + 0.5222560949048191, + 0.2547576076031742, + 0.9831936460595448, + 1.847369624937548, + 0.3092307309923556, + 0.7475072556101324, + 0.7463477020982873, + 0.29864367047815615, + 0.8039366419429383, + 0.3909270488526444, + 0.6871393543715878, + 0.466778368709141, + 1.0839173913889717, + 0.3051488857800391, + 0.7515750668312281, + 0.7249612226484374, + 0.9263328522784414, + 1.4235746139014631, + 0.33334627072942596, + 0.6408023125901149, + 0.34631698866865185, + 1.3063055295324322, + 0.5278995036944464, + 1.3359851049382465, + 0.2357813286846903, + 0.26053244209686244, + 0.6991747138234481, + 0.7003805904670518, + 1.8679511800128865, + 0.43844981586823917, + 0.7522939301156418, + 0.2712425375260034, + 1.3656482614522167, + 1.3069863672725415, + 0.26015207878820257, + 1.2539063960887682, + 0.9430208036253872, + 0.29689799778077375, + 0.9302702934429266, + 0.4287531153003575, + 0.33247105845872776, + 1.0914193988781369, + 0.522754576006384, + 1.13864448977131, + 0.9281530571396164, + 0.9472226610416467, + 0.846177103812876, + 0.8320122145567557, + 0.5945393721946411, + 1.3162678906239291, + 0.3853849015327223, + 0.25732236833961925, + 0.24033198685761328, + 0.3453857009981429, + 1.507198353421937, + 0.3652074656679909, + 0.6001832103660677, + 0.6759882355559346, + 0.775590515560467, + 0.45599724137395103, + 0.41909289675909644, + 0.4587023422814468, + 0.6965808737255995, + 0.4263181990167673, + 0.6199645866052891, + 0.5557810782817714, + 1.1462712516497897, + 1.0542532310130772, + 0.32161411808197654, + 1.0750600350447475, + 0.600470027841967, + 0.20415485123649932, + 0.23878813534769958, + 0.46580708308261315, + 0.3797877196335298, + 0.22144099174771073, + 0.6479457771481184, + 0.8829347076643407, + 1.5731693677462382, + 0.4750770744038077, + 0.36765424332343244, + 0.34015017928565844, + 0.6343922787330993, + 0.8589837242791709, + 1.0736104591197215, + 0.5720814750766112, + 0.4722330943206698, + 1.1454688306750105, + 0.7072926256471358, + 0.8113825495513299, + 0.5924002043519131, + 0.24379249879334614, + 0.3856435323093498, + 0.43841331397191596, + 0.30421427664230655, + 1.4144912343399267, + 1.5837560747502217, + 0.47106212822948584, + 0.46484461932805854, + 0.7264409463050243, + 0.7293454070996456, + 1.0320858067726435, + 0.6068973574789682, + 0.5385079178157504, + 1.2822649906810903, + 0.3908314264136574, + 0.7293956364976466, + 0.3720027822752651, + 0.5768827767872188, + 0.24529621589892836, + 0.5176421537571428, + 0.3952448109188864, + 0.32664693064132555, + 0.6836085240662108, + 0.31275994832833837, + 1.4974643799723755, + 0.5291520399493036, + 0.6794797933351283, + 0.7856153344945321, + 0.7326937261774378, + 0.39154467690754524, + 0.22321714328927827, + 0.571050834184361, + 1.117429713921427, + 0.4437038079782921, + 0.7710050998761313, + 1.1731580372756913, + 0.6358010228688712, + 0.48926705351645905, + 0.5093312928034287, + 0.442701148276436, + 0.2622321217635517, + 1.0892820922238786, + 0.9398371879449424, + 0.42926813016728493, + 0.465305637994184, + 0.3765893925616218, + 1.1374755331260127, + 0.38914489670779395, + 0.6585528138222286, + 0.3986142136635121, + 1.304529409514628, + 0.525144969879339, + 0.3427173513092023, + 0.8267528689511519, + 1.2957065895358466, + 0.4353229280759216, + 0.23368348733548464, + 0.23685488536963606, + 1.7868066555049678, + 0.310455494438397, + 0.3102941469208824, + 0.9479112865432229, + 1.510561409634195, + 1.022445516788766, + 0.6721594413302301, + 0.9478816638761589, + 0.9997329901233004, + 0.4387958790820938, + 0.5307243793405015, + 0.5435962390942345, + 0.29022407037660014, + 0.8450650413776603, + 0.20082469292735952, + 0.2860209539936157, + 0.8592479615298084, + 0.7129662115501373, + 0.8627669736155797, + 0.9836279332043676, + 0.8762386968499853, + 0.671489101166526, + 0.4157309431652308, + 0.37308085772443045, + 0.23259631886883428, + 0.494248879382329, + 0.8887368105235426, + 1.532280745271797, + 0.8229457866534945, + 0.22868349671639127, + 1.268558194971087, + 0.4579209667810065, + 0.3559060182699817, + 0.6871231974509717, + 1.7039339259185187, + 0.5417270857287754, + 1.3930432169526539, + 0.7552936009410385, + 0.4521153839379714, + 0.7880221955921513, + 1.2560939305537902, + 0.2505687174954608, + 0.9017028600297786, + 0.2963173735234371, + 0.21207245132570918, + 0.23261033983464185, + 0.5431004784383439, + 1.045610978237557, + 0.2648364583147131, + 0.5867621248369631, + 0.8619780903439732, + 1.306762890935773, + 1.7125476691886334, + 1.3212510534488826, + 0.5935882472286872, + 1.4856665637770694, + 1.0687197343546773, + 0.5717440142873537, + 0.3112053517611186, + 1.4862411836884533, + 0.5669884612204593, + 0.61111472188908, + 0.6212063613538047, + 1.4519789894654933, + 0.8720060379973456, + 1.1565509335107018, + 0.48893030634181267, + 1.281453911540386, + 0.5091217483135198, + 0.2383750544255271, + 0.38847955223641994, + 0.3188606078317726, + 1.0753470256087643, + 0.8769188019641626, + 1.9198722494104712, + 1.028473990224032, + 0.21877540155350195, + 0.8067374805174201, + 0.6973288738631805, + 0.8916467674277592, + 0.5504105684593572, + 1.1474549096081326, + 1.1888019795340268, + 0.7823083236339933, + 0.7364205729590353, + 0.23686768038553485, + 0.49316237055003453, + 0.5144508717749086, + 1.08321752577533, + 0.3764380357063751, + 1.316716913715138, + 0.5197642532545517, + 0.27920547607061785, + 0.4804738675381003, + 1.1504729617263374, + 0.5587177633455257, + 0.49142177247474983, + 0.50487223542522, + 0.6823643948173735, + 0.7403623160737212, + 0.6903706120531115, + 0.4735833461723689, + 0.7585070567030625, + 1.7887247886329791, + 1.646654643159243, + 1.5744837518099606, + 0.3306664508810466, + 0.6891790324913107, + 0.6472403264958936, + 0.46226499434981183, + 0.7615766075259472, + 1.1732885545154599, + 0.3222413679980293, + 1.1752179304096135, + 0.647219918783226, + 0.5589339015081195, + 0.29559383283812085, + 0.3233906984494994, + 0.3744678828343991, + 0.4208931217541559, + 1.7929330290017538, + 1.1931034889049652, + 0.4892173193894577, + 0.8686171160648939, + 0.5750257645211981, + 0.28393247280973927, + 0.30400927200959954, + 0.35812910705847145, + 0.7450409632018568, + 0.6508974371206929, + 0.4050155494060652, + 0.8377829387890592, + 0.7733119139222635, + 0.4764024283851042, + 0.3746370052964283, + 0.6994607412355932, + 0.5894551460553645, + 1.3232327704010216, + 0.9374747148144145, + 0.34328913842837205, + 0.9399295210009242, + 1.4583602553826656, + 0.2035990108414691, + 1.4132510530339597, + 0.5283340425068669, + 0.7746488257786387, + 0.6375781378404236, + 0.2788225693870961, + 0.5449103801202114, + 1.0320924744897122, + 0.8407662782847038, + 0.8754819937479624, + 1.115606715871356, + 0.2773747354206301, + 0.38224116124383994, + 0.3198919781747101, + 1.182140402316902, + 0.46933012347130065, + 0.22414220471988436, + 0.5742376381398698, + 0.7458798623900336, + 0.7127572757311457, + 0.6365392762189971, + 0.24269176899506037, + 0.7872048653505157, + 0.883691272817887, + 0.20680627110853125, + 0.40577871276499855, + 1.44298826760434, + 1.1244434919504405, + 0.2111852843960081, + 0.9383285119903334, + 0.21880064534093396, + 0.8075518896670769, + 0.977869334270888, + 0.4622512449082555, + 0.4022411337309681, + 1.053408659746042, + 1.2737677470357462, + 0.7392379483118741, + 0.9095428464916966, + 1.1264153954000755, + 1.0386964103597771, + 0.6942177839667472, + 0.21536822664015542, + 0.7616780545592856, + 0.4619271073479646, + 0.25740320631447444, + 1.130496254766949, + 0.4653310577231617, + 0.2645778955113717, + 0.9590663446527917, + 0.7581234874559184, + 1.402524110717239, + 0.29092926289234466, + 0.9741394235103327, + 0.8049052872341967, + 0.6113701813002821, + 0.5742731691563678, + 0.2764199539587866, + 0.21258767636515943, + 1.0395240191040367, + 1.0928469383634647, + 0.8691765362037019, + 0.9065361905509162, + 0.777708118665655, + 0.7091275773947698, + 0.6452485600257325, + 0.7221782887641215, + 1.1415141528337966, + 0.5410446875380743, + 1.1936778057943487, + 1.7100935457254716, + 0.6756342080720215, + 0.5946504744132638, + 0.7314067507099357, + 0.27111354727190345, + 1.1581396663674735, + 1.018969422613995, + 0.7703600186131497, + 0.5301754685209452, + 0.21863217496886317, + 0.7257214833336774, + 0.7664722974795743, + 1.125541731757371, + 0.24677169249704697, + 0.9369474453564074, + 0.9367591075282264, + 0.39804206610763804, + 0.3724430595302512, + 0.8408180341431748, + 0.9357308955612946, + 0.26397474584133096, + 0.4400664652566027, + 0.3723070093686382, + 1.2207528960911238, + 0.2679556867904459, + 0.479181259281857, + 0.5867078067219349, + 0.25583078541957605, + 0.5152769133987505, + 0.45026453855023624, + 0.5438417056071625, + 1.6648267205018907, + 0.2550961883477201, + 0.9995218403742558, + 0.2983630370437568, + 0.21878322817115314, + 0.5965679852236098, + 0.6706627155635798, + 0.6129710028792592, + 0.5807003991279913, + 0.46291871155222875, + 1.0325686575222748, + 1.6706234144097172, + 1.191976905875223, + 0.7436046392181731, + 0.9386495836625548, + 0.26055678365464985, + 0.5758085913901431, + 0.7649829496032555, + 0.3342474162075061, + 0.30752955767646484, + 0.21801026858852351, + 1.3521793599237868, + 0.4267654919494645, + 0.5467736949440921, + 0.24912974273562893, + 0.3814528912627551, + 0.34824519557864325, + 0.31971655959802026, + 0.6742003929069559, + 0.46957408998079503, + 0.9413061231478038, + 0.3784354034799188, + 1.2220566868582476, + 0.6629420608728338, + 0.7429506852616433, + 0.23843249444006828, + 0.34812790394499105, + 0.8966818354079298, + 0.3752553998841637, + 0.4193860463773045, + 0.6058542694538375, + 0.34835528077204814, + 0.7177853913778096, + 0.6085093179519234, + 0.5203464977949586, + 0.32004461793751005, + 0.6311844051461045, + 0.5658051493777354, + 0.9755538075507281, + 0.7012376097777814, + 0.3344960827145493, + 0.4725256887941935, + 0.2910183105594795, + 0.6354621784311014, + 0.5311170494490506, + 0.5979280824158967, + 0.4802966549001872, + 1.0250583350927638, + 0.24600408534110743, + 0.28075232105938613, + 0.2410974730513036, + 0.4916823630848384, + 0.6778881523223286, + 1.077585234243138, + 1.0548044111323494, + 0.21635434060273526, + 0.3746312567320024, + 0.3820940164095063, + 1.45508653215323, + 0.8513175147326982, + 0.28779012131816134, + 0.776667898845706, + 1.4249914097598528, + 0.9654503831038652, + 0.4742459929713892, + 0.3351256915101319, + 0.27512379951472016, + 0.9194161273747532, + 0.7140478969863062, + 1.1179270077299253, + 0.4703232730314774, + 0.6947467224297166, + 0.5420643465496885, + 0.6111825342703616, + 0.20252602739563175, + 0.35594394466733, + 0.49414873569729845, + 0.8284896849674416, + 1.0289077127531037, + 0.6818801765248156, + 0.4350885885999024, + 0.5766389838913273, + 1.7861795511720406, + 0.510483393163094, + 0.6654956489543511, + 0.2562556552031042, + 0.4372682109804732, + 1.1849662496626672, + 0.3274569657962339, + 0.8839193500263409, + 0.6250202867365124, + 0.5822962207515607, + 0.9896596186900712, + 0.3930429137975687, + 0.8920416028307733, + 0.437631947318513, + 0.5540652170446746, + 1.2817970500640552, + 0.34209710759580897, + 1.8174407553715348, + 0.7431174407580008, + 0.3014684144131035, + 0.42207600884865865, + 1.170969717892198, + 0.7044090546128812, + 0.37545613509518166, + 0.22852720405275856, + 0.523113284093169, + 1.4517064786338392, + 0.4470478865365124, + 1.0890774071926725, + 0.39757146096593937, + 0.2031504981837589, + 0.3756538067939272, + 0.2886714661173359, + 0.7063403582997937, + 0.5277628282480639, + 0.5056242877875627, + 1.3282363419597103, + 0.7879017462355947, + 0.9827864823342156, + 0.553807087140857, + 0.8061534021365729, + 1.1360285490810462, + 0.21628840776623656, + 0.6922217302541592, + 1.0790736020518612, + 0.47806137658625947, + 0.2850485915673919, + 0.912943466349746, + 0.5523020083716607, + 0.6648217435673237, + 0.3605474823293011, + 1.274297028331612, + 1.3850863510145717, + 1.3430186085644817, + 0.9722095950061237, + 0.7219749084343003, + 0.43859635558709176, + 0.777055939483151, + 0.8576183007259892, + 1.0431404324670768, + 0.536440555509049, + 0.22311664954326335, + 0.413061039833793, + 0.9404240342966583, + 0.34974106402009103, + 1.158093438901444, + 0.6357704003108412, + 0.5112693365682919, + 0.9226614628410444, + 0.4340825143526111, + 0.27525689460805186, + 0.8746560999775318, + 0.3221520057423647, + 1.5480358492940651, + 1.0387198262782278, + 0.9395196060086141, + 0.2544044950657379, + 0.48585163187712777, + 1.487037349968302, + 0.7538399447053445, + 0.4346475984665274, + 0.6644308764287244, + 0.487951290614074, + 0.6553712252611408, + 1.1613894733429442, + 0.3089264461987062, + 0.4218582481534298, + 0.7362661358575195, + 0.881411760512442, + 0.3707169819670935, + 0.7560141624750726, + 0.6798389615847567, + 1.7725936319879436, + 1.1815309396268692, + 1.5037906357855184, + 0.3089958451644818, + 0.30874578417913046, + 0.449569404432038, + 0.24537652796480522, + 0.5466343889978892, + 0.37803216595347905, + 0.26343163170461614, + 1.1967026490955888, + 0.26875618953167235, + 0.20909614751989514, + 0.30115065944182895, + 1.4256898175759696, + 0.9422682296705276, + 1.3588341210748973, + 0.9784184525975074, + 0.22165331756988174, + 0.6137259988480652, + 1.0328603708746273, + 0.564847426999836, + 0.9188702296043033, + 1.0830944855832993, + 0.5185146036289187, + 0.3577509581962268, + 0.32544928582067784, + 0.21843083712629074, + 0.49494927152416096, + 0.7143397758805735, + 0.5441226434130935, + 0.23253059708413323, + 0.47744376910543335, + 0.7778685232187569, + 1.009774723598002, + 0.702852947338147, + 0.9079725775939187, + 0.37584189827276404, + 0.37284410567053794, + 0.24985873419430907, + 0.87495911543708, + 0.31832444836246915, + 0.21238994834703295, + 1.3916797195531614, + 0.4584025997616278, + 0.8121870261808435, + 0.8714888110355337, + 0.2433273677609208, + 1.1056696965829942, + 0.3612310041953306, + 0.30976882412832674, + 0.9090785076073968, + 0.7980627931387453, + 0.34569696852561155, + 0.7852817774124957, + 1.318438412791645, + 0.6766940305399588, + 0.6578569801669899, + 0.7024816956738479, + 1.1526481543358178, + 0.5725383526652887, + 0.9287023964589999, + 0.7869084875586475, + 0.4519323626261267, + 0.7361393883533741, + 0.274433260714049, + 0.7841251687188222, + 0.5380781323483255, + 0.5386943508036875, + 0.36676535805730653, + 0.493020037846821, + 0.35187766182130414, + 0.4151709736383288, + 0.8453854828549715, + 1.240027588794207, + 0.44202517298651695, + 1.2341016523703892, + 1.2482708280736445, + 0.33975202501027413, + 0.7081610456617217, + 1.0152286090158016, + 0.30422131375054945, + 1.180729279211945, + 0.9701052071375234, + 0.8005051812872894, + 0.5276505713745935, + 0.7090758557137459, + 1.0392791591638, + 0.5438170523091239, + 0.4193733033166323, + 0.3603290451359052, + 0.8635809065108638, + 0.25034151076312244, + 0.7635841036424756, + 1.1483677208411887, + 0.20095381741354973, + 0.9413776609924894, + 0.38940941533452444, + 0.8342813208580936, + 0.782153646859892, + 0.5616455291344695, + 0.9672888099453196, + 0.3113764300533366, + 0.4795049747984217, + 0.7106862488010441, + 0.5806408331701024, + 1.1856625605205056, + 0.3841654259398584, + 0.8483673635497224, + 0.509386601150324, + 0.42669832292405663, + 1.1889651571490936, + 0.3596160033107672, + 0.9933652364118964, + 1.349723112278372, + 0.6804557926305644, + 1.0248685144388356, + 0.3585744942237343, + 0.6392274233057779, + 0.22354253998879264, + 0.8052744709276962, + 0.740306758926977, + 1.1353494361334762, + 0.5319400117196105, + 0.764363256029262, + 1.562080745763567, + 0.985172046882486, + 0.8815559219909388, + 1.2241515186921088, + 0.9513501365875617, + 0.2109725334925351, + 0.28229989162402186, + 0.6156603838954143, + 0.4013415226277368, + 0.6212945665947713, + 0.44025525245965536, + 1.0090386943410232, + 0.7366004919047625, + 0.7340480671261731, + 0.9721624920600892, + 1.553854748968381, + 0.5194202194780939, + 0.6010424422118635, + 0.4112360242287186, + 0.6738137631460479, + 0.27433309455693783, + 1.1132777916968166, + 1.4534490687662622, + 0.29401081318260003, + 0.38764561944667825, + 0.4512560635765957, + 1.2016535955864438, + 0.6458910480825498, + 0.53730768527181, + 1.6423905168241748, + 1.0502733725988216, + 0.68298608954762, + 0.37925550004130687, + 0.7899178833204673, + 1.366761810102724, + 0.664165230583886, + 0.8188210782163576, + 0.2425273870977573, + 0.3544579878088075, + 1.0849619223118188, + 1.1878540346812512, + 0.59491218151874, + 0.4034578994912067, + 0.9493891179571001, + 0.42620997173999325, + 0.34408606596793484, + 0.5264296928309377, + 0.4038066602998806, + 1.2249494314082914, + 0.4149134960413727, + 0.600246556374382, + 0.8087169356976269, + 1.2428020160924689, + 0.5642624990954582, + 0.31627223425095136, + 1.6381248220264588, + 0.2891200094530918, + 1.0510566646610127, + 0.21944314602967982, + 0.22719941029982044, + 0.3403819834823418, + 0.5873483296695955, + 1.286533724952033, + 0.5071545403931502, + 0.23634100178061995, + 0.5094324733341661, + 0.421532231949375, + 0.34311673950316685, + 0.6287222776179425, + 0.44439345908950295, + 0.6481958787503179, + 0.6405445281456162, + 0.8761374573797452, + 0.6283855287400151, + 0.9035836740612609, + 1.0777028822471337, + 0.43519657356767566, + 0.47498078087506546, + 0.7682352646750041, + 0.3876367850005176, + 1.3603816298748113, + 1.170725671286635, + 0.8849294086850603, + 0.8297313296559188, + 1.493269102246557, + 0.7925267991718773, + 0.7194423924721614, + 0.5426973079055772, + 0.49623376149694354, + 0.5861728392772726, + 0.4440844676991062, + 0.23464541567888805, + 0.6082562680901307, + 0.613050024776693, + 1.186901672125372, + 0.7644423819511939, + 0.5612229508390043, + 1.8056162771952338, + 0.29855579645011804, + 0.7507380555873406, + 0.3302009680767842, + 0.7265913601267835, + 1.0034401714960053, + 0.3219979208473936, + 1.0209724413583472, + 0.37148577093099716, + 0.582698018304615, + 0.6208884050755868, + 0.4543455027347484, + 1.8497236459518498, + 1.5800026655006816, + 0.681890242373913, + 1.0851806830424293, + 1.5198066162595194, + 0.29740366375354294, + 0.5203148772355439, + 0.3733880951954359, + 0.930572113060377, + 1.3924500312743282, + 0.4280349751210091, + 0.5482760031788203, + 0.5761807655588929, + 0.8347557455448847, + 0.9096340252618478, + 0.8218881667539224, + 0.29509283867713565, + 0.4275984100095655, + 1.11202079956951, + 0.3219921085610368, + 0.7541759902817088, + 0.7238310594309755, + 0.8473287062629437, + 1.4302888362131785, + 1.42682321131696, + 0.472727159013086, + 0.796060640428696, + 0.21168413945202352, + 0.43279495827450204, + 0.8955232526087524, + 0.8005046057785126, + 0.35219265103003394, + 0.6226614956136539, + 0.696513864662477, + 0.252615923602091, + 0.8634540090214751, + 0.6005400055093923, + 0.6648587644488902, + 0.6922286475687316, + 1.9406755752790992, + 1.0292338385720208, + 0.38898305917361625, + 0.9403834137522875, + 0.49029098415735667, + 0.5816349151737614, + 0.6388474261169825, + 0.3242356369863005, + 0.6356319614454822, + 0.5396937632416179, + 0.21264474920885706, + 0.7332054954954342, + 0.4044350844035631, + 0.5707795936982678, + 0.9389838280520847, + 0.5136677579124962, + 0.2309106992304848, + 1.6714452474307937, + 0.4818379831160414, + 0.3980667913597842, + 0.5972518553695372, + 1.1435237964740204, + 0.4957984871595613, + 1.0879621910129482, + 0.41813612563656993, + 0.43263662921500295, + 0.8548030947657217, + 0.5953929284525209, + 0.8093282571542441, + 0.3807459926155442, + 0.9496450679585353, + 0.6104622944848525, + 0.991943057514315, + 0.832253130677476, + 0.7652404117436108, + 1.8334254673462427, + 0.4560174628853207, + 0.48480391411109997, + 1.0034305254911096, + 0.5575500250628959, + 0.3090581084251799, + 0.30896153917974767, + 0.49861947149081254, + 0.6848018137495787, + 0.29466869899264464, + 0.6468220701068128, + 0.7276016599152374, + 0.5611512245587524, + 0.3401422431136459, + 1.0163097976272542, + 0.40615261319548945, + 1.008875552281219, + 1.0285209849165382, + 0.392598171743798, + 0.7087810713160857, + 0.4137401285330284, + 0.23684135182303725, + 0.5471013370199981, + 0.283139342992627, + 0.2572929202216627, + 0.43203986189692645, + 0.865582648827199, + 0.4858649248849787, + 0.26509897133275323, + 0.7392786876856247, + 0.8369003107392569, + 0.4584265538802776, + 1.3586739373461738, + 0.7956149189277621, + 0.5927174452476446, + 1.0343520798744512, + 0.22512180295942485, + 0.8742915009339929, + 0.2382563256890214, + 0.7810976765487354, + 1.3719706277280157, + 0.5134694954787957, + 0.9274062788225822, + 0.35603399833035176, + 0.40746093404437644, + 0.6698736477417188, + 0.20211088271249975, + 0.3007037358437478, + 0.8338975674070265, + 0.32960094410887764, + 0.6812565311017467, + 0.3233980909004858, + 0.8226900605440972, + 0.6908703072092143, + 0.5739229341367496, + 0.6872152084298059, + 1.338627865917522, + 0.5963025315410185, + 0.4130286511168684, + 0.26344204049220055, + 1.467853190952312, + 0.8068008884175382, + 0.6171526243474874, + 0.49834685811287527, + 1.0776807429564552, + 0.5580267908733578, + 0.5151653859149128, + 0.8275553239667169, + 0.921921914675004, + 0.45279725567508716, + 0.3041053289775494, + 0.5556204193940837, + 0.5095179600838328, + 0.47633280695712427, + 1.5984715671840446, + 0.8685938919893028, + 0.39508173787268214, + 0.2011147929925971, + 0.2882535936196497, + 1.0950589595863007, + 0.279623546799857, + 0.6874069704326653, + 1.44115542685703, + 0.8113368944808848, + 0.5823924913559583, + 0.3174253868175073, + 1.6129179087355554, + 0.5188906642404159, + 0.4225610895574515, + 1.0039293044695534, + 0.4063111829539311, + 1.977787123453701, + 0.9300553608409432, + 0.759606333343923, + 0.482696621582762, + 0.2805528882817407, + 0.5091826206009512, + 0.510231801721021, + 0.5734726263598935, + 0.47939827363069176, + 0.34428377389557957, + 0.25642738432665185, + 1.146717645841962, + 0.4309223155093243, + 1.274641904748993, + 0.21389179844182035, + 0.7488389956080868, + 0.4949526168428978, + 0.883350590546694, + 0.4929704516489867, + 0.3134942871789514, + 0.555258617661422, + 0.30306997868945224, + 0.3480171409471319, + 0.464968876743405, + 0.2545742322644409, + 1.8092922803427811, + 0.32123114392067226, + 0.25646012897230663, + 0.28461448179884963, + 0.7286264113045815, + 0.2756961168263371, + 0.6545899805414703, + 0.900765766303191, + 0.37202969646824097, + 0.8927597192421145, + 0.6392118142421591, + 0.41425702276741133, + 0.23523970428512828, + 0.8093042994335949, + 0.380920064764937, + 0.4379997885300407, + 0.6572926270888775, + 0.6353060913226843, + 0.6770905817536776, + 0.8922724965100054, + 0.6050220680526518, + 0.9129540573220202, + 0.30518819439861966, + 1.2757441365711086, + 0.42732805915614763, + 0.26881024452133173, + 1.2007808678603404, + 0.43085728327224165, + 0.676170166713255, + 0.9225460190131378, + 0.4705396489593335, + 0.42543820535217, + 0.4407502618163805, + 0.3884704444728399, + 0.2176651458758484, + 1.0588406203986718, + 1.577588582017136, + 1.2997117499651862, + 0.8867222501799016, + 0.24930459429219035, + 1.1346166933059818, + 0.3154377861501778, + 0.8012333925796744, + 1.0175467367602447, + 1.3789013870397693, + 1.0933650298455242, + 0.2641415694812749, + 0.36605557713960424, + 0.7020572507564393, + 1.053649382565234, + 1.3035681150607232, + 1.3235481761520238, + 0.3897895257564901, + 0.625939213924046, + 0.8041131772738596, + 0.3069746062527396, + 0.42056731818881726, + 0.8827126647893729, + 1.2776964667515829, + 0.8450117515025971, + 0.31124213784498095, + 1.7910921389315397, + 0.33201578606148785, + 0.31093487220948657, + 0.7081205850391088, + 1.267770546436818, + 1.350343317168772, + 1.2114653907781192, + 1.0814797423337341, + 1.0996581464789439, + 0.254528174451954, + 1.8237288116235992, + 0.7580550228730143, + 0.8070517824274644, + 1.0330212950208648, + 0.6470965591927219, + 0.2303064477111786, + 0.5118425898559466, + 0.38894988323708274, + 1.3098436902976078, + 0.2705426652507024, + 1.0908255804463338, + 0.9035708013631948, + 1.1969795538113448, + 0.29740396389463675, + 1.0472507383946852, + 0.3895931991245903, + 0.30743371885295734, + 1.5519225328164434, + 0.5233142585503443, + 0.2176838493199833, + 1.2292643428840184, + 0.906465372092145, + 0.7441974269028335, + -0.1572715713329357, + -0.07727977834819799, + -0.02730220301108312, + -0.0012149493630591892, + 0.11252170295355864, + -0.05918938739969493, + -0.11090002393019202, + 0.1258781254474544, + 0.09903361484792093, + 0.054953441650541966, + -0.13205093505567744, + -0.16232804372689197, + -0.14538677001439165, + -0.12041898443145188, + 0.06711325985035198, + 0.10120782038243484, + 0.09002169027339128, + 0.14035589775675072, + -0.1977979117639404, + -0.18823157959490355, + 0.12614500799707343, + -0.06821592102577125, + -0.04828826981683116, + 0.01688131876305062, + 0.049996134120990715, + 0.11699895447429559, + 0.08886026488398688, + -0.08925627502617002, + -0.16026745058601036, + -0.17048479919013296, + 3.0424043223283476E-4, + -0.02311110451977011, + -0.18093694764760163, + -0.15733187596842776, + 0.08212088793373683, + -0.011848750736675412, + 0.038691858145878756, + 0.11163952387174722, + 0.07146590469405058, + 0.1317781419404948, + 0.10669609270780915, + -0.16877142708736967, + 0.0741230390631484, + -0.11395865290345936, + -0.115622563702415, + 0.040593977534260195, + -0.037685189869406166, + 0.021592876982860672, + 0.07936839002835987, + -0.18426116591286495, + -0.11822284450308543, + -0.1727178492017082, + 0.10689926467115748, + -0.17587794362165232, + -0.030570470808904068, + 0.10525664125180248, + -0.07579496993627531, + 0.006561360491090976, + -0.02741503873221105, + 0.09048151782113828, + -0.08671596893857454, + -0.015730206431098136, + -0.0222596624466244, + -0.09998419453503651, + -0.14303266553406888, + 0.14381537578883935, + -0.18700207702399596, + 0.09157332596674313, + -0.040215100985371906, + -0.13393806101571232, + -0.0361419492953031, + -0.1799143606874988, + 0.024183331897171895, + 0.08281030197611124, + -0.046267889509368526, + 0.19476553216465445, + -0.15433883509394586, + -0.17056763425421245, + 0.18337912295736017, + 0.17242680952533396, + 0.04637882214321797, + 0.10729944478440565, + -0.02031114562475267, + -0.1494679159530772, + -0.18431592237958375, + 0.11555023768642474, + -0.1894834149635889, + 0.024888386835516654, + -0.1560398588172149, + 0.11943458341018777, + -0.10508916063845626, + -0.06755373630825146, + 0.08651521439900962, + 0.10131742125774103, + -0.026580240544499343, + 0.0910522839639666, + -0.1567560469803093, + 0.12663814089639244, + -0.1850235663589953, + -0.08332028445276145, + 0.026919167743515465, + -0.14646749433541023, + -0.01764382081586127, + -0.10085108833209487, + 0.16157059874863294, + -0.18149619858257723, + -0.17294818017720842, + 0.1307854598373273, + 0.09465801683180451, + -0.15755383740244794, + 0.19219599317485261, + 0.1216055520891942, + -0.17847701155656742, + -0.15086378511145224, + -0.1494398368324558, + 0.14783141749346987, + 0.16783047033912177, + -0.01207598956257491, + -0.11892188327996826, + -0.15756525492180465, + 0.12164189105560833, + -0.1773144065703364, + -0.11929596563534438, + -0.020151443419762452, + 0.038976418871695416, + 0.02782954896618897, + 0.06085284235444891, + -0.19937490509158298, + -7.716721594853511E-4, + 0.07486739185277594, + 0.18135220230098914, + -0.10431019145185663, + -0.09516179157461098, + -0.16594138214247225, + -0.15850839433502598, + 0.01667070508704463, + 0.0265240289227063, + -0.17058383650206768, + 0.08307498230525193, + -0.09769537463503003, + 0.1333623565531713, + -0.171240854277227, + 0.03794261779514015, + -0.039039225769405446, + -0.05803424386045403, + -0.0011996199179239479, + 0.18962569244868807, + -0.08317607775268053, + -0.061803884880204635, + -0.014901230433182314, + 0.07605515445145467, + 0.1006084064396155, + 0.1878772643688151, + 0.1509760469444012, + 0.1035489269151775, + 0.18207194253333822, + 0.14191591381540092, + 0.09055747069678192, + 0.03858262526299647, + 0.1669933277413003, + 0.11084989906069971, + 0.010713484540430048, + 0.15038644218264344, + -0.1899493942733663, + 0.1891655030934658, + -0.025845280198578895, + -0.14761362427959132, + -0.02667281070646408, + -0.19474728777665462, + -0.18702350965717457, + -0.16528395402812468, + -0.09152571724464692, + -0.15180682060788092, + -0.14030110934746284, + -0.16230571263679155, + 0.1578774837584768, + -0.09789190111745014, + 0.15792542196854856, + 0.03558897425154271, + 0.06139365345519836, + -0.11404362481360165, + 0.05928220265436175, + 0.15718875222890263, + 0.15311191743455438, + -0.004626271043716598, + -0.17804024039436955, + -8.975211895461928E-4, + -0.08791573953638517, + -0.1771583941705107, + 0.17492440641981216, + 0.12331545994569902, + -0.05608716225094143, + -0.08901133279309119, + 0.06529828458073295, + 0.12905695340886844, + 0.14613881001266185, + -0.03655136679413481, + 0.03499286657104726, + 0.1515113390578802, + -0.13963790415436136, + -0.08269095798081876, + 0.04959615617650491, + 0.1980694421338741, + 0.14258665899935866, + 0.19216820217838623, + -0.1675573528674972, + 0.06998870981060999, + 0.008378349890727405, + 0.1787674852611516, + -0.02246704717481686, + -0.05039469060795496, + -0.1734229502720809, + 0.060552492816906556, + 0.07986245606373812, + -0.11088916270430144, + 0.08420627302345102, + -0.10548115886781102, + -0.036694200404809724, + 0.0615998585955465, + 0.15865408987153498, + -0.04939337265502016, + -0.05793285547884785, + 0.07318936260902792, + 0.05568028959547871, + -0.12962354953593902, + 0.060254702811059796, + -0.04735099566760522, + 0.012462725629451872, + -0.03510943969537443, + -0.048842037371016514, + 0.09522277246943464, + 0.10303906095534483, + 0.07459917835210296, + 0.16620108677809745, + 0.1518729600697371, + -0.0062567461029260085, + -0.058201237564610826, + 0.0920237235630229, + -0.12750191881666906, + 0.15916654860506904, + 0.09757396438861284, + -0.16508549184492805, + 0.09407688873035658, + -0.16127310057636476, + 0.14868946125609928, + -0.08852170550216619, + 0.08582375506221471, + 0.1233041154575931, + -0.1746557725184213, + 0.17209943026105887, + 0.17655396486851935, + 0.15748891837199938, + 0.19958380703520423, + -0.002693024982389338, + 0.07345929682603494, + 0.021777469521263998, + -0.1260523315571066, + -0.03211081373602234, + -0.016891706892010173, + 0.07149739971404653, + 0.049578658168737445, + -0.10856005314607571, + 0.1651749583500944, + -0.12835053360578536, + 0.08702475001534449, + -0.02850151153572011, + -0.14080568666208867, + 0.09039202052606406, + 0.014691828788041853, + 0.13083600066498627, + 0.1307774207065271, + -0.17667711081656395, + 0.1373257474869851, + -0.16509688424973268, + -0.13217478417537196, + -0.03719433218404791, + 0.0923258435781083, + 0.026034342811117973, + -0.14125429712470394, + 0.17216223525485333, + -0.16912142679905529, + -0.11445009464992194, + 0.11232851682541924, + -0.026793833055756715, + 0.03474114952252668, + 0.13901660069174973, + 0.1877502877607086, + 0.16958404592093188, + 0.13713967424070916, + 0.17388281940026137, + 0.0927198501847745, + -0.0741747782381172, + -0.1831591347054549, + -0.04240077541369592, + -0.05790078472312709, + 0.043953618601317204, + -0.15823902253811242, + 0.10033806585877422, + 0.06690764026902046, + 0.05804193983919541, + 0.01472255115823867, + 0.07816936935945772, + -0.14627631890676168, + 0.07173182186483165, + 0.015322115506240441, + -0.009294248590652365, + 0.03403444108228235, + 0.017245258761309775, + -0.06287002852106105, + 0.009662851258522698, + 0.1925990753491718, + 0.038906541420789684, + 0.09689363096408947, + -0.04261245726375749, + -0.0761149514599533, + -0.11339499429691706, + -0.009165472109040703, + 0.03203031051601827, + -0.10895902890199705, + -0.04290995125685201, + -0.09515084387095864, + -0.10997378941511987, + -0.050197495614369196, + 0.06349584842707784, + -0.09638002958583787, + -0.086022591749034, + 0.13387282599387676, + 0.11231783305332194, + 0.16092126861745792, + -0.1991431560392634, + 0.15189621442287793, + -0.11391041320144556, + 0.04500803047415122, + 0.13792153302700166, + -0.05990048509414945, + -0.0937774267497158, + -0.07948468878433236, + 0.04296863752998031, + 0.14627473796476687, + 0.0011106643177959514, + 0.050419975584060285, + 0.04974012716996725, + -0.0635748504293647, + -0.09671756056983152, + -0.09788229453406805, + -0.0025988104891110494, + -0.16852403781319686, + -0.12254011910437362, + -0.17365857301431095, + -0.1762961670722278, + 0.1903898028805718, + -0.014712612221873377, + 0.0303392751252388, + 0.07097373608521326, + 0.18555306453378448, + 0.05216383245637365, + -0.16661987985448762, + 0.1041170540981622, + 0.17881388126316305, + 0.009794408621513477, + 0.03999330471817059, + -0.17909669807199335, + -0.10063276898107151, + 0.032205497512657645, + 0.09129332657764726, + -0.05152485787772437, + -0.001527976170348439, + -0.016348278048760354, + -0.13417140156137913, + -0.05282993147523274, + 0.0591458629191965, + -0.16206528562849143, + -0.002848856283226611, + 0.08435489443969055, + -0.17055206333535242, + -0.08554131861008028, + 0.16834042338314031, + 0.024086047711388663, + -0.08498066195004249, + 0.1142952859640341, + -0.05951140009138608, + 0.14603374662693158, + -0.1535406123702238, + -0.036585911222914776, + 0.18265254658386573, + 0.16490080288271985, + 0.19855508979131536, + 0.01127777907086553, + 0.17788812413843624, + -0.05734138922806747, + 0.1489307543708164, + -0.00949066338234005, + -0.012424114462787678, + -0.0789283871750123, + 0.1323676395921148, + 0.11750671136701492, + -0.19304542403303362, + 0.10363736792781265, + 0.09546513927219955, + 0.10162341344954372, + -0.025436688275725802, + 0.05399489136135705, + 0.04288188621943463, + -0.00551652740518947, + 0.01903280710050653, + 0.02552969306293908, + -0.05190315245084936, + 0.11148680857832262, + 0.11713566820009065, + -0.025317542385850263, + -0.12020369329426304, + -0.1687138967996809, + 0.09464920167422239, + 0.06547822029419444, + -0.14399963467670152, + 0.024858452917146605, + -0.177486131623935, + 0.17987394195422862, + -0.029635701392709102, + 0.1742286356521739, + 0.05500042084908764, + -0.077925076896192, + 0.11908140846948663, + 0.13395897889562453, + 0.11235415785246491, + 0.046292618015988655, + 0.05605609978514746, + -0.09494351418615969, + -0.10871356360673047, + -0.10963618451489165, + 0.08013170474925871, + 0.11592230490763972, + 0.1759493787561035, + -0.17983465696706588, + -0.05841710893799576, + 0.19742916633917454, + 0.1624527101066375, + 0.06362015224848569, + -0.11041403977009008, + -0.15760936458073824, + -0.07980249408313383, + -0.0702191226646709, + 0.05908448671225921, + -0.08336824878259873, + 0.04101313658353912, + -0.053712509703041894, + -0.16480841482044556, + -0.0026276545000164667, + 0.009452318731809503, + -0.038068204070318544, + 0.07828388806796122, + -0.1976067798117253, + -0.0032268309242577176, + -0.1971475836364988, + -0.08736976417281307, + 0.02813750534440335, + -0.14621707353873162, + -0.01728159793227594, + -0.008947155400842944, + 0.1950412620392218, + 0.06698647361682036, + -0.05445914902361623, + 0.1481514587692459, + 0.0754140703770786, + 0.04725614282465697, + -0.11204645225597262, + -0.045042920882160505, + 0.07872952255635778, + -0.01325279452135222, + 0.0822617322394701, + -0.10974496757279756, + 0.17608189757925338, + 0.10313424680662112, + -0.01723199236172018, + -0.10178668231132297, + -0.16162948352744957, + -0.15688409407279216, + -0.049228240688714564, + 0.1790783964114267, + -0.1867506057437447, + -0.04835425378106986, + -0.09344181441628203, + -0.19404927285585885, + 0.0806487462598414, + 0.13430202982258727, + -0.037146011703329276, + 0.08020889470088811, + 0.04336955253707137, + 0.07988337055688567, + 0.13240583731736713, + 0.17515118397396767, + 0.07630733362846459, + -0.16609328767521092, + -0.1990334668307265, + 0.02794180274778539, + -0.03316097575795883, + 0.17530346465883317, + -0.15155636422683078, + 0.053842747683892946, + -0.17413988633570873, + 0.04908373194885431, + -0.14784820281255198, + 0.03325451927614181, + 0.18204926657993828, + -0.19314226789322678, + -0.10574620609070347, + -0.06486064166230966, + 0.17173501831832666, + 0.1831767251057167, + -0.023066946977714407, + 0.19288895858325844, + -0.16602112414473602, + 0.09661689927658858, + -0.13722984698956708, + 0.14572951207911614, + -0.04473073929424749, + -0.07691449328343736, + -0.04407622099039173, + 0.1802474953208796, + -0.145328207439, + -0.12441130945682619, + -0.07219247270501024, + -0.012495485050119715, + -0.12904165698618617, + -0.011507833228674425, + 0.07396447465202086, + 0.15644325543724322, + -0.018406232098682095, + -0.16100525468561325, + 0.08313159370307441, + -0.15648916315517947, + -0.1288103714079066, + 0.02764518146215225, + 0.11989305034471705, + -0.019947859939500028, + -0.06275571342462843, + -0.1111647713871097, + -0.0054510590331564015, + 0.05819107510152812, + -0.15649058417323658, + -0.18677913625701437, + -0.18331840188059167, + 0.14033547663252083, + 0.07100525790783452, + -0.13984826523896368, + 0.01325847439547089, + 0.03194235789554925, + 0.04969394530009904, + 0.04733389881471991, + -0.18657098484904452, + 0.0017374804294335423, + -0.07810831935729601, + -0.1628585952175208, + 0.07815299534313266, + -0.17409611297069966, + -0.1469707338593502, + 0.05761731683472067, + 0.18978836143395864, + -0.08764249989353967, + 0.09902115905198056, + -0.053548108585865645, + 0.013669788027955891, + -0.0035748272555176258, + 0.05552417735439095, + -0.13404978282718485, + 0.16555777193194537, + 0.07606005148305041, + 0.12629399618590426, + -0.08679782601662996, + 0.17393132377470885, + -0.19821658711525084, + -0.11262777182600177, + 0.052525932960003754, + -0.16946790050869473, + 0.11228425803157208, + 0.12544306287072812, + 0.01772897201677089, + 0.14886410720346271, + 0.006991031990090253, + -0.006442647594734867, + 0.12811189362060346, + 0.1924888348944825, + 0.16038002215760586, + 0.050139929921076805, + -0.09167209964268484, + -0.01655176627192157, + 0.16442909765689326, + -0.052301166309132986, + -0.09023716257265418, + -0.16754878775096688, + 0.09726949152770399, + 0.1600715070047059, + -0.02645778799868808, + 0.07011886203960499, + 0.05140457169580433, + -0.09589865813710126, + 0.19197888648660932, + -0.0242073442209946, + 0.16852690320828836, + -0.14090543065940117, + 0.13288015586794355, + 0.09188395877242088, + 0.1641263582003591, + 0.11036718814306928, + -0.1289114281401321, + -0.12105832574136031, + -0.10609177601292838, + 0.04881396916763168, + -0.11208401770662547, + -0.192183106155809, + 0.1558830434517862, + -0.0386146282141011, + 0.02908134068990104, + 0.08054667538694897, + -0.03580534734608488, + 0.08444604481350872, + -0.10128319481627837, + -0.00200215623817172, + 0.18080183965072177, + 0.12051269946176323, + -0.06007460103716991, + -0.16789674142876723, + 0.037160538967277834, + -0.16253727439151278, + -0.16710302240245656, + -0.03865347431205883, + 0.043814695086405904, + 0.19696033498812282, + 0.041020032505267576, + 0.15843062052416845, + -0.15153443752285514, + -0.11080164420620911, + 0.14549655212958684, + -0.10052569662671164, + 0.12335502468783176, + 0.19647501835503767, + 0.18684496429099792, + -0.18275108370719484, + -0.07454008189462806, + 0.11074317640624197, + -0.08887670562831632, + -0.12940408076409132, + 0.1274723921778534, + -0.12301283214427916, + -0.10351107656665458, + 0.11879361078974991, + 0.06396011775204613, + -0.13162418837360443, + -0.16370866669977807, + 3.650850885182689E-4, + 0.1603617655568086, + 0.13800291477906862, + 0.07711386150910893, + 0.044746987622477016, + -0.11904130817326251, + -0.026272503894780325, + -0.18309285990516555, + 0.06076288390168988, + -0.0860460503982694, + 0.16965254833893603, + 0.018603953733595226, + -0.12786620630114215, + 0.004612376546319326, + 0.07174500173296007, + -0.17879073352128, + 0.18403323267961672, + -0.11241595176120489, + 0.03509820624806027, + 0.05638167953974119, + -0.1552109648999061, + -0.17739480313960784, + 0.1386932681293576, + -0.0061091553830226525, + -0.15495438236327394, + 0.05829132715308791, + -0.030449030939981594, + -0.15474129365502262, + 0.17418045571540894, + 0.06555046341539839, + 0.07334640366468893, + -0.1564547453010181, + -0.10757558308255401, + 0.17275732248217024, + 0.11917494901945166, + -0.16439037956484728, + 0.06649479364388569, + -0.03909413626232206, + -0.09935408274326876, + -0.03264782317801145, + 0.14190535752264985, + 0.015910400888133037, + -0.007906629947160352, + 0.18213502709919205, + -0.19583631876488466, + 0.11561457314211676, + 0.15718771552981006, + -0.0394230414856907, + -0.16763740582535477, + -0.1677104610112869, + -0.06384042515851474, + 0.11917385591884541, + -0.059132323858937186, + 0.19488579862766445, + 0.17959798499149723, + -0.12903197323204912, + 0.01024408381161234, + 0.12599834641228985, + -0.03886135001106977, + 0.10574644497541168, + -0.1806918872282867, + -0.0394844121526865, + -0.1796204139779458, + 0.19254380286806752, + 0.06449056492896607, + 0.032695717107363145, + 0.14790801223845113, + 0.16411981453004632, + 0.08371385886939776, + 0.06402496723449408, + 0.03047747820803436, + 0.051991421321087, + 0.12438178514889481, + 0.0702563749805695, + -0.11203048662078259, + 0.16627533059669594, + 0.014953393860441413, + -0.16754025286724655, + -0.001418978375324632, + 0.0884864864593314, + 0.16695103522618993, + 0.02937700082707056, + 0.17167645208439414, + -0.1870094412518139, + 0.16690487576698051, + 0.06114358863599677, + -0.19244433290402208, + 0.16798474799002852, + 0.13799611398418396, + 0.050896402205573454, + -0.024730810526508846, + 0.19327843881704013, + -0.06470347894010486, + 0.18732311002837962, + -0.07875801288866859, + -0.12253883010377208, + 0.12481496751819393, + 0.05009954735803061, + 0.08406759303053156, + -0.1818711815636282, + -0.19029464063177495, + 0.19178031715273974, + -0.07269924253957752, + 0.1666147368333791, + 0.019477557255148534, + 0.0117107470448594, + 0.11875235112142306, + 0.1270761356344667, + 0.1351082619889936, + 0.15782582168013812, + 0.0030894050476605126, + -0.011771045657168066, + 0.1384417550108171, + -0.005690029449463711, + 0.13366461883168773, + 0.11194859609257117, + 0.15275965942533132, + 0.19839069062149498, + 0.06860607778602736, + 0.19138483065822687, + 0.028410812309215418, + -0.021497756611524053, + -0.014487944425044169, + 0.15905890775308845, + -0.1622303203765569, + 0.06742181180015476, + 0.155793346965189, + 0.004756803329882492, + -0.06327903213761919, + 0.032842170391322506, + 0.14427152423659223, + 0.11310652270630443, + -0.034729901281548375, + -0.09321753816265167, + -0.16376612209010852, + -0.19355807295984812, + 0.08882743956229643, + 0.07183175868180543, + -0.04955293323756576, + 0.008462834032571965, + -0.1523643349832165, + -0.020327044896547884, + 0.12393513782567933, + -0.07264849310966938, + -0.021217316528053014, + 0.08163797433043138, + 0.16366659010732268, + -0.19786724316916554, + 0.015181515958383794, + 0.18814168608088377, + -0.1700700633600206, + -0.029632202007796427, + -0.1563507006074318, + -0.19755741745836475, + -0.07585063061599828, + -0.05444179881282189, + -0.19420969486714695, + -0.09578950083687317, + -0.04335308793157698, + 0.13044173659876748, + -0.16548028281066715, + 0.127321449627096, + -0.056525480057566704, + 0.0682609407323179, + -0.10530842224663947, + -0.13231020942279434, + 0.16519939237977307, + 0.06597675302693969, + -0.0435358702250673, + -0.08951034424417262, + 0.17175644178837599, + -0.17308491067846724, + -0.03738699249649797, + -0.08705166537495944, + 0.1932328344355016, + 0.01642331494984444, + 0.09505457575569666, + 0.19890718879738895, + -0.11042996418983733, + 0.029279805835938897, + -0.1908957824907252, + 0.12133578794776616, + 0.12707648780660952, + 0.058824155414906314, + -0.13096631890499838, + 0.03991639252741276, + 0.10022223580514499, + 0.11344484828518069, + 0.006770934812037278, + 0.19126476673534448, + 0.19229569243885838, + -0.1282746952982785, + 0.1852530233854257, + 0.17983057535584523, + 0.015616906108438237, + -0.0316011058492896, + -0.09359737931183502, + 0.11015760194777596, + 0.0015657764156027337, + -0.16052196080136324, + 0.06320405882931217, + -0.135808267779229, + -0.06983968327269072, + -0.06478946940292905, + -0.18714277393116446, + 0.19111148023091182, + -0.11335813203797414, + 0.1157254153822772, + -0.005435794188040034, + -0.026715930431068537, + -0.09297878594453649, + 0.16321273383050838, + -0.1849454451324987, + -0.14365943838401818, + -0.040242229078669166, + -0.18407535440528883, + -0.09428638083437463, + -0.07232436491087878, + 0.14975388094695158, + -0.0628300591965549, + 0.01870037048837482, + 0.11411931505963074, + -6.325152846889858E-4, + -0.09934323399460339, + 0.031031608988341976, + -0.056833655738336694, + -0.17726736783934907, + -0.1226042197026864, + -0.1551597706790028, + 0.026455351207313186, + -0.041445514590729815, + 0.031000713614763628, + 0.0966282199037142, + 0.019765493172613578, + -0.15368514707041767, + 0.1172638836432798, + 0.15679014748376038, + -0.11422787742640801, + -0.1088074631862024, + -0.05449385881863939, + -0.023610539993304418, + 0.06027346343254199, + -0.06915455770471578, + -0.1761555005276724, + 0.047383350733487956 + ], + "y": [ + 0.22581057491713455, + -0.7555525299494774, + 0.7061542631836198, + -0.14251526530817654, + -0.49902536922290436, + 0.49808482019565015, + 0.7142698584858577, + -1.1030357294605402, + 0.8354273265850677, + -1.1737044069715559, + -0.5087943004780094, + 0.338348682442462, + -0.7616186659470676, + 1.359895585386145, + -0.40555331197136335, + 0.3452102936077957, + 0.5866814313646292, + -0.8456938382324591, + -0.7226873124027765, + -1.1070210534479732, + 1.4555411613442424, + 0.39024613138822334, + -0.8755171226968508, + -1.490070462359629, + -0.2749173907473734, + -0.6702503971070106, + -0.07998492373744431, + -0.3705417147503839, + 0.2724774132119271, + -0.6817898413821614, + 0.6824369269820013, + 0.6008578018322807, + 0.44817308212443424, + -0.5437002027793826, + 1.0065576557261782, + 0.36688553779800387, + -0.7008966531612852, + 1.1900149391519126, + -0.6835238906995311, + 0.6635030833158693, + 0.371887976564945, + 0.5561890843522083, + -0.7098949338247245, + 0.4983879583393943, + 1.1073292425577854, + -1.8864941628707539, + -0.9157104181248075, + -0.7614840063589026, + -0.6037954479033565, + 1.272872703315874, + 0.3740691039985632, + 0.0863099547293534, + -1.0116568545919549, + 0.7799348927833867, + -0.7043751322419637, + -0.08694458511522828, + -0.5362685166161957, + -0.4026267209020467, + 0.051873049661518365, + -0.06765064694659792, + -1.2317098887120155, + 0.3880981630950874, + -0.8146979696814807, + 0.34669233886586387, + 0.41276110432715857, + 1.0064895060536019, + 1.0676877865376224, + -0.4238712073885056, + -0.4692570644992179, + -0.1324125890387308, + 1.2165195795047705, + 0.550713932383961, + 0.7153909821784352, + -0.5150588100820731, + -1.3897976150606455, + 0.7516509921827651, + -0.0817130582200184, + 1.1758564722576983, + 0.9920852010237554, + -0.7335925532036951, + -0.8010509489955293, + 0.35676432351141635, + 0.7087288245790081, + -0.7269177525652983, + 0.48316317001281167, + 1.0090456271988664, + 0.6417867550326055, + -0.015257847830362813, + -0.5579121373092467, + 1.334179361708464, + 1.2576153223623432, + 0.4203074874025029, + -0.8169693904121051, + 0.22127882039346372, + 0.1864403246189347, + 0.1892222317067498, + -0.8585267877958156, + -0.73824601503979, + 0.043203740878487676, + 0.05976595600794346, + 0.5261161914707796, + 0.05459848631662281, + 0.8142284701960866, + 1.1775008077482425, + -1.7129966555936227, + 0.5392137283668005, + 0.843815511957197, + 0.29610215011004415, + 0.010076698023272365, + 0.7989359456424733, + -0.2815943341510233, + 0.060063191965934556, + 0.20279760251420467, + 0.929976027745352, + 0.985550148186668, + 0.01643802474185192, + -0.23270600995770813, + 0.2229492860545625, + -0.12635979664555114, + -0.33387213960733203, + 0.27795688518645384, + -0.17508795369203964, + 0.8622069455482206, + 0.8369705202290594, + -0.5208180341905181, + 0.6156412922969859, + 0.42234273140315637, + -0.8205162022484536, + 0.17043714014643982, + 0.27318959190130787, + 0.9413071679261175, + 0.7039346254644773, + -1.148157225953073, + 0.45167277477908346, + -0.9411999755700768, + 0.3188119056130634, + -1.4172685658681328, + -0.2165631652477366, + -0.03487709736178642, + 0.11954521216605046, + 1.1524294060032279, + -0.8800339877873813, + 0.7875617610848998, + -0.2623836882730456, + -0.48707882501285626, + 0.8284434730987982, + -0.5665121935067422, + 0.7121491236511686, + -0.4398810039989182, + -0.2785586416816685, + -0.9289750855525667, + 0.741023736238737, + -0.25099304001439837, + 0.9786387275465588, + -0.7959486803753459, + -0.22671534175766622, + -0.2746817285805446, + -0.7425732308535506, + 1.047137573752546, + 0.44944721666083465, + -0.8866101063131535, + -0.13527251784871677, + 0.016541186519590086, + 0.23534599988348684, + 0.3293233355637657, + 1.2224222043976736, + 0.5425720071517154, + -0.1280049209984564, + 0.001954906746421222, + -0.6009086802039767, + 0.16384335679273568, + 1.5803708057165295, + -0.28989263189086, + -0.1301239663211736, + -0.16463503091997453, + -0.30443291610618034, + 0.2985409154238687, + 0.19531598620970717, + -0.21456932917972713, + 0.2500909060962191, + -1.135796520481747, + 0.6188216892289365, + 0.3307002800510084, + 0.24302926903883282, + 0.3685656400089314, + 0.27293395040415663, + 0.02455066237522903, + 1.397736507042045, + -0.1806759448304557, + -0.8717818303869675, + -0.6338053892215219, + 0.4472063655658238, + -0.9065170445529103, + 0.3423070939100835, + -1.3207380541952656, + -0.6586629756222226, + 0.4784879705542129, + 0.8611123262251095, + -0.6486491304755804, + -0.056746238794017814, + 1.2859551868123924, + -0.32955356162878274, + 0.45548904663402273, + 0.8245109405028375, + -0.4691995298001649, + -0.19701317827327966, + 0.12205905283070795, + 0.17462383000119264, + -0.7055472335608791, + 0.1299135712172751, + 1.9648533012399907, + -0.9403371500631832, + -0.646381722278297, + 0.5506873318561567, + -0.5675854454899318, + -1.0862346998756935, + -0.9228663038611096, + 0.010263563924376606, + -0.49808937027175443, + -0.6395213330376674, + -0.2635271427689068, + -0.8100371164587012, + 1.079023163150245, + -0.11295304746255676, + -0.3691110411298641, + -0.11834567007635845, + -0.7452955418987628, + 0.5915537788963555, + 1.0123314803877685, + -0.076155767563474, + 0.5559717690282117, + -1.3868680777093125, + 1.0110250526115623, + 0.9019604875825002, + 0.6611993272164889, + -0.17391310525384215, + -0.5443946356373669, + -0.6843010586406989, + -0.23277252710922183, + -0.18576216029402462, + -0.08450657355518323, + -1.0246767240345434, + -0.8041241286043328, + 0.3673925893668525, + 0.530213083167197, + -0.1900178597680876, + 0.35771637689415103, + -1.2757172231761582, + 0.14380347153636755, + 1.2952558937606042, + -1.4890814520863103, + -0.5621138799608508, + 0.281919361478034, + -1.1979452653763896, + -0.17691580655744107, + -0.5087830784588762, + -0.5095606386070051, + -0.6332914807548731, + -0.9728811839814172, + 0.6688601649884033, + -0.13408256293210383, + -0.6739136941705696, + 0.11757512907418821, + 0.5749907695299332, + -0.9938956377761491, + 0.10261734783947324, + 0.2535253363451298, + 0.08552041955220045, + -0.4469264054699886, + -1.7246017682372727, + 0.13284389619069248, + 0.0491883392943624, + -0.9874234908854084, + -0.6956412808914685, + 1.0249374246163798, + 0.8846557705619997, + -0.3897796061691658, + -0.4246759751842552, + -0.9375603681431798, + -0.7069207650803873, + 0.4852605420247119, + -0.8376977090476627, + -0.4211325533573659, + 0.7289854383714515, + 1.0182040447589418, + -0.76056864447848, + 0.7933754159223438, + 0.8497946768955317, + -1.1196725024682328, + 0.9034078133318303, + 0.0612195863183778, + -1.0505219002817943, + -0.07153014833423438, + -0.10404723244436741, + 0.7407384504362097, + -1.0927127138756534, + 0.14158344021663313, + 0.07327684699513348, + 0.11411333298973687, + 0.02550415664275217, + -0.10225576519178894, + -0.07948288042697577, + 1.2458958743494382, + -0.29194926995511195, + 0.1448199977196793, + 0.3406474058451205, + -0.07562839085124551, + 0.7961130070965331, + -0.02311917278020422, + 0.7733280529853241, + 1.3703058387731841, + 0.19873837945184925, + -0.6714479272203295, + -0.430123777121825, + -0.5709069894296309, + -0.5470078603960333, + -1.6443650075918779, + 0.9460515490573355, + -0.3560894182985467, + 0.8376152181461695, + 0.7402722323827282, + 0.35465701241556097, + 0.43359749831275923, + -0.1536049810249272, + -0.12821278460719376, + 6.49196777831491E-4, + 0.46561281981544644, + 0.24111366415038518, + 0.35628928492539463, + 0.0623387256635804, + -1.1380471706768431, + 0.22405928818903006, + 0.3824119581911595, + 0.9332116993414362, + -0.12611917328989006, + -0.978643116734847, + 0.13359853166678054, + 0.5314424116584618, + 0.6333824459796656, + 0.06231006248323324, + 0.8676200901796222, + -0.8708879752393366, + 0.23274772671841587, + -1.0191816836094563, + -1.4174230706981952, + -0.5280675772527871, + 0.15162815468513977, + -0.37920194343486185, + 0.2941610870184977, + 0.14728913361810067, + 1.8274401721118496, + -0.8123796173776915, + -0.556700386909594, + -0.017440315525096964, + -0.6567944243180327, + 0.084308141461343, + -0.23176343464131707, + -1.2401283485849333, + -0.8232509030499763, + 0.5343647887511552, + 0.6018538677068249, + -0.03466287181104459, + -0.909606757431864, + -0.028397673872803727, + -1.4140060174965372, + 0.8939158319499381, + -0.8146770808355384, + -0.23329157237371803, + 1.2718140057358542, + 0.2337631325617532, + 0.3211474277859989, + 0.44523823816414093, + 0.07989423749448611, + -1.2276507561777295, + -0.5379388201664222, + -0.5017519170155844, + -0.13821153238288536, + 0.05585924621849932, + -0.4005268439820973, + -0.23282171147698186, + 0.17281351707649728, + -0.06144934176114243, + 1.509815080691037, + 1.1403093674820928, + -0.18420679845210106, + 0.5773301136685434, + -1.4000423272233178, + 0.30051378019590297, + -0.27220135566704917, + 0.9616441127407971, + -1.1490713111477135, + -0.9203356721101424, + -0.1003525424855048, + -1.4364776663047742, + -1.001226553794056, + 0.611824565898798, + -0.6765344191046045, + 0.4256003540677437, + -0.4982806868133972, + 0.2746631415435092, + 0.05589120630033349, + 1.2970754119245622, + 0.4356403619037077, + -0.14125991488118445, + -0.05961435337479555, + 0.7367662127966675, + 0.3726109422765364, + -0.03533577400832389, + -0.6907012751606492, + 0.3255737618453472, + -0.25764736032797636, + -1.1962627046759193, + -1.0574399611592442, + 1.175076141840186, + 0.3414532622280549, + -0.9217332312140928, + -0.3145901852671427, + 0.4503573942165019, + 0.8225031665325426, + 0.1785429175876435, + 1.9503315920545632, + 1.058741356376456, + 0.35182248120380294, + -0.7568249929760497, + 0.8761124653145035, + 0.327272777048996, + 0.1402861932587994, + -1.5266398409081976, + 0.1816471525029312, + 0.957917196315535, + -0.25451221636511645, + 0.6539944689458818, + 0.3851947124728646, + -0.09158079160724909, + 0.600106083617232, + -0.4816649661417832, + -0.9697757868121046, + -0.5395085769864477, + -0.2898051299514991, + 0.6002629575457717, + 0.06699931245679014, + 0.022237313295914527, + 0.25616169382912635, + 0.9351008932144117, + 0.9563287876025994, + 0.7420811483222566, + 0.08939713240650962, + 0.37632814430903005, + 0.413092766399279, + 0.783979108571533, + 0.3560554358959674, + -0.4556981066139604, + 0.8203292299027013, + -0.4115678953763108, + -0.5318579743683625, + 1.3023397151245875, + 1.0902867769137505, + -0.6119168878025163, + 0.30999607098124116, + 0.6926755519999811, + 0.384096283086795, + 0.32489992263816864, + 0.1299607519416957, + 0.11803294550307544, + -0.12532252643427366, + -1.2854100740495062, + -0.18150156929449535, + 0.21903106419232887, + 0.501503816898262, + -0.99918686966443, + -0.327998709849929, + 0.007553477881515701, + -0.2502236609772384, + -0.5794048080540146, + -0.6172771200722736, + 0.5269063018773714, + 0.42622109936220076, + 1.0540739030930986, + -0.7938729006801694, + -0.3662477719750114, + 0.461299785119118, + -1.0440737404144884, + -0.6410398987913348, + -0.631684226490742, + 1.1785267774204573, + 0.36256695630386815, + 0.6338799113499919, + -0.6257745511615775, + 0.0651180904263486, + 0.9259553448929975, + -0.34959142414515654, + -1.152383681562509, + -0.41063591392446425, + 0.08276871850189294, + -0.32479036907195286, + -0.5585471991028644, + -0.8451778644757777, + 0.9191318778449474, + 0.02558043263572796, + -0.2676354209535612, + 0.4497435392476262, + -0.7712835228191226, + 0.5639542117200494, + 0.8096078281117319, + 0.8363083672356082, + 0.5775603371963004, + -0.36407230352730335, + 0.6220020001251491, + 0.5530522629604667, + -1.4961709489310173, + 0.02899562401342768, + 0.6483090671245396, + -0.18925856487240336, + -0.91455133413417, + -1.2458285253180086, + -0.4088913068275607, + -0.6639236911018132, + 0.6496268084497087, + 0.8748747624350439, + -1.7538502053597902, + 0.32527368352582053, + -0.3905816685411035, + -0.32588477173291347, + 1.3965951261514113, + 0.2782696928449692, + -0.8293903282251018, + 0.8913478195938188, + 0.28780403974146695, + 0.9001838146802946, + -0.8208568712371727, + 0.6755223899533574, + 1.1719216181107925, + -1.1998567024506799, + 1.0108125345445964, + 0.32919189603391213, + -0.05433668989182214, + -0.900280237084277, + -0.01514848858602373, + -0.25581664388619213, + 0.5506287109450075, + -0.31471828083078834, + -1.6571013982280876, + 0.3197521353079883, + 1.0005708863878893, + -0.5819557982377349, + -0.5808946335237062, + -0.8425390030865211, + -0.0933837971241486, + -1.6717526486262964, + -0.33559577299496013, + 1.084272757407083, + 0.1259769545589422, + 0.46249789310422373, + -0.5879614134278448, + 0.2559706854976619, + -0.5127489360058787, + -0.31541245795248696, + -0.9658858113054846, + -0.9420957413925777, + -0.8283979800883676, + -0.06783887979452527, + 0.13198744553710548, + -0.8583101709132408, + 0.8208282937008239, + 0.5608682931346576, + -0.025197378962191895, + -0.9647085987028116, + 0.3103635091198763, + -0.5738424597452569, + -0.45102256913671607, + 0.36970597662799604, + 0.11714409644908041, + -0.1973155155056156, + 0.8141909546570981, + -0.1675621275746925, + -0.2381579815921225, + 1.0591044278935913, + -1.2744616987229391, + -0.7079124377208975, + -0.530610384151215, + -0.0605283154883338, + -0.07688393735758133, + 0.3683203794030785, + -0.7852457829626989, + -0.6363760045845597, + 1.3833091396486403, + -0.29060003407533486, + 1.5224212265283763, + -0.6395253321332137, + -0.34457755419900743, + -1.2189201890930992, + -0.7720801671998679, + 1.026120872004667, + 0.283199536625748, + 0.5812393544373742, + -0.9007446158623735, + 0.8607664668710883, + 1.1241089893590812, + 0.7912616088808438, + 1.4096102307347647, + 0.028648161939558776, + -0.2777442336392911, + -0.20838502750143068, + 1.678808105525636, + -0.4239822290469965, + 0.8750986544646978, + 0.12262395328937312, + 0.6752763418073516, + 0.5163960742001409, + 1.056870549578979, + 0.3353915737630295, + -0.2584178059659167, + -0.01727983470092072, + 0.028429339791272875, + 0.601167472703748, + 0.9293816164473908, + 0.7393664542950381, + 0.893894654560316, + 0.9340677011225839, + 1.5333776711853986, + 0.4221756936825875, + -0.368794189368784, + -0.23671056296914342, + -0.11318492935018513, + 0.3483082020103635, + -0.23502888798575983, + -0.33329867386200673, + -0.8826633712406937, + 0.6717470662969026, + 0.05828718094625693, + -0.2206703009604105, + 0.42084267273266024, + -0.0339740603892286, + 0.2565489978655381, + 0.0778869582208532, + 0.5517045414619153, + -0.4712984454852447, + -0.9200159043081717, + -0.23309842573675751, + -0.49189502201513735, + 0.4609346453299388, + -1.0701074907388946, + -0.626614009925888, + 0.9813458910283119, + -0.1351821586051257, + -0.26701433839613026, + -0.3358908060434502, + -0.23915561158893053, + 1.7850911895852795, + -1.1703108733427277, + -0.7706151388400482, + 1.1963004122938996, + 0.2470977973840883, + -0.31151912653781905, + 0.9083925253257805, + -0.1471144766031167, + -0.3288720215603332, + 0.08555919161064852, + 0.7202692882346969, + 0.19240608354864455, + -0.053529432542048894, + -0.42058244919372223, + 0.2596422747690001, + 0.8894159221980785, + 0.6086295707374386, + -0.539538209612982, + 0.8238540332302681, + -0.9950340409941782, + -0.8944278442088213, + 0.48988787574596404, + -0.34766525511485996, + 0.7834453996364572, + 0.825402318064817, + -0.2763513868532986, + -0.026507324901821457, + 0.09849317928527006, + -1.1167407247292296, + 0.1673932649627926, + 0.8572315280834386, + -0.60357786464392, + -0.31632710737924974, + -0.8820815804816532, + -0.7316103055060604, + -0.5376750718481408, + -0.8076820105227237, + 0.5369373510473556, + 0.9253082163313726, + 0.9772504454893794, + -0.10035983781712543, + 0.38175244020941884, + -0.31000075380174874, + -0.022621946766257294, + -0.42397131763726625, + 1.0190382311215205, + 1.2880661625597927, + 0.2173688837281541, + -0.9047889473325674, + -0.12121469342973681, + 0.0392708294817509, + -0.05315110596560169, + -0.2119272181457451, + -0.6303868947708517, + 0.5983827732091003, + -0.10633944567939747, + -0.15160095827295847, + 0.5035245021562633, + -0.22316542996834488, + 0.4865548338774132, + 1.4406480446424332, + 0.25635178707954676, + -0.024640274557348078, + -1.4575704865806178, + 0.5970418579037489, + -0.4955006824705506, + 0.5568831132948406, + 0.20567714525519346, + -0.444099025218937, + -0.028606981722013456, + 0.324759932879378, + -0.42951372302483304, + -0.01133268649808806, + -1.5859109106041736, + 1.177168811805723, + -0.8753854736095613, + 1.702246061892162, + -0.9875627714858153, + 0.41373624141176274, + 0.29618185531009894, + -0.654174310458635, + 0.1328581514331377, + 0.6792914981732645, + -0.07210221821442975, + 0.19429672578789908, + 1.0226729378261623, + -0.7688122498210705, + -0.42798936368356616, + -0.7613872043755698, + -0.005314749267161489, + -0.7860868614171456, + 0.6556729492171747, + -0.5997134486900979, + 0.3657367351726428, + -0.3383483611977645, + 0.6693781117952465, + -0.6311124418194285, + -0.759425039316103, + 0.30715142490546876, + -0.09726946438438668, + -0.5089184967265056, + -1.7676179632374347, + 0.17653579676512388, + -1.1257657808085701, + -0.4877223625343806, + -0.8428061615626831, + 0.607434571901166, + 0.32021647524600505, + -0.42767578268381523, + 1.6781122647662745, + 1.3995147235543668, + -0.525581021726249, + -0.33197411338812877, + 0.3374374381303774, + 0.09434086973794019, + 0.473360745623101, + -0.27158616688047926, + 0.3624479892635374, + 0.024591267901440977, + 0.23757319773550215, + -0.727382560914306, + -0.33101559064460534, + -0.9872883815605951, + 0.30187007154967216, + -0.8419985008230509, + 0.006779742378594004, + 0.42805822236624536, + 0.25704974652601287, + -0.7277156809396401, + 0.5180473348518403, + -0.47808901596668696, + 1.2542759113985114, + 0.16756080999391948, + -0.36315993045796324, + -0.42736019964488864, + 0.7388606405115329, + -0.3907619871808913, + 0.2967166185257014, + -1.7035115840875255, + 0.7983206440165865, + -1.1156167621376984, + 0.14798479874966913, + -0.5954513537004886, + 0.9775324397744445, + 0.9041130672115311, + 1.0333211279705554, + 0.9369820911728406, + 0.5704177437311566, + -0.37982737597297256, + -0.8069052611710181, + -0.02081673703928856, + 0.3703370270104549, + 0.4460603064237247, + -0.6769964364189409, + 0.6079572489850419, + -1.41707958850137, + 0.10799479541620641, + 0.01035776533718632, + -1.00708446727484, + -0.47414326896088127, + 0.5397979734520985, + 1.1686015571376658, + 0.2689570309241253, + -0.10692406820655266, + 0.9048532588922983, + -1.0744646319458973, + 0.439757289965748, + 0.5310510681332139, + -1.023314036225095, + -0.045337474209076384, + -0.2729572573296618, + -0.8776813706518083, + 0.6774535169695244, + 0.6743253590081912, + 0.5838913579119881, + -1.1548115757312352, + -0.10439345935638797, + -1.1173507621383476, + 0.5525220521876202, + -0.8349367388250455, + -0.05059244423410762, + 0.3839577585046987, + -0.3530129383604799, + 0.9350265974499704, + -1.0748000475112676, + -0.6924112921651915, + -0.2393969690505475, + -0.43749949286825457, + -0.869175432112403, + 0.02891999600589748, + 0.40731974899826257, + -0.7494511700715862, + -0.6675961329527746, + 0.6115450522621351, + 0.33046633998389013, + -0.6566671325827715, + 0.169952477407331, + 0.6550463729828243, + 1.2983146377901527, + -0.1601259543088185, + -1.1053917097399992, + -0.7295514539327685, + 0.8072821518935439, + 1.5547501869812532, + -0.5295070351520885, + 0.826702955312558, + 0.7939999973874061, + -0.19988795515380528, + 0.2800284718619882, + 0.775291729961488, + 1.0685573371166799, + 0.051559646193605785, + -0.41401482581819515, + 0.3600648698166844, + 0.41659746450779567, + 0.39756176479507876, + -0.5362735712329036, + 0.9466402761833356, + -0.8209360364880305, + 0.006182899884917939, + 0.8999301932818933, + -1.1106635876542978, + -0.7123116071630884, + -0.7098451181015517, + -0.14890566143977763, + 0.11036374252550857, + -0.6454050026563863, + 1.147775203217776, + -0.7211397986028572, + -1.339451742228596, + 0.3746310728439534, + -1.3583172173087137, + -1.6446577337571717, + 0.6161367952985476, + -1.1425130228482239, + -0.037570210730017865, + 0.4030134883812271, + -0.400686573145709, + -0.7082801079830241, + -0.16429907561451262, + 0.4618083202950133, + 0.0190658383939589, + 0.1836329677956855, + 0.1649592148102684, + -0.15592901244541274, + 0.061412668030431536, + 0.34596319857240754, + -0.1830411372993747, + -0.7497688161651386, + 0.5013741127483994, + -0.5538710906363148, + -0.2220558788214132, + 0.497350629430469, + -1.4431642117570103, + -0.24877111641284122, + 0.3440172430361173, + -0.8295403893028395, + 0.172123278157397, + 0.21451093449408556, + -0.31758667277136887, + -0.0036267030511498073, + 0.027501333617553442, + -0.15810261830157532, + 0.3591977179010084, + -0.14848741622265982, + 0.43662115612054697, + -0.851068220950414, + -0.9534589099828956, + -0.9813458151449947, + -0.3843146098194592, + -0.94399321918055, + -0.7397762419110041, + -0.6102789623994576, + 1.8334497213022811, + 0.46543551882337325, + 0.31389385872707887, + -0.5426072304634011, + 0.4500130914153145, + 0.5883897446292493, + -0.08317163997718037, + 0.2580906676581969, + -0.26088899013053884, + 0.8445533373592534, + -0.29536381304803927, + 1.0963251028668035, + 0.4986561385149771, + -0.2788433874652022, + 0.4010668858410041, + -0.4573190071763419, + -0.6801845619505689, + -0.5902456520689139, + -0.8166041000424777, + -0.7541765883557234, + 0.4041150956114814, + -0.5615630045880211, + -0.6912982906495069, + -1.2224009036046963, + -1.3326604694230708, + 0.47223477905863914, + 0.9508568531476248, + -0.2570774162972418, + 0.45473992341038344, + -0.23011309504804203, + 0.34777872951888394, + -1.2950829266528014, + 0.4158401022337146, + 0.5873328921499591, + -0.3269706324065838, + -0.044137633812677546, + -0.29250827049589045, + -0.4383112410690243, + -0.20575529961353933, + -0.889158779424565, + -0.5359509556427238, + 0.12019663410873517, + 1.40357325217853, + 0.19168301312084948, + 1.1559201689467602, + -0.6673517788123999, + 0.6079219849799701, + -0.15661210754059426, + 1.014541470323748, + 1.4486199131069313, + -1.2688402472467732, + -0.33022375180663344, + 0.835774457458948, + 0.3734823394630973, + -1.229913930469054, + 1.0759472310725982, + 0.021414460631092973, + -1.0562104091504487, + -0.036754652870054694, + 0.26838167946191005, + 0.14195120865801197, + 0.3795118673864675, + 0.5105512354491412, + 0.3482386580546316, + -0.3647201016428821, + 0.2815544011440519, + 0.46626693321682033, + 0.5941789677415064, + -0.803181420888348, + 0.3642983159049418, + 0.33588266633554203, + -0.5161049046917251, + -0.5591030556262818, + -0.11641258497321476, + 0.22857499468428205, + -0.2862321831587048, + 0.5591848309598676, + 0.41547455119771637, + -0.020038967285205607, + 0.10900646118716517, + 0.7955892457913483, + -1.0943722601701702, + -0.4345894099001662, + 0.24211594391732613, + -0.459438808437112, + 0.8029519320384176, + -0.45359842932903977, + -0.8592541039020927, + 0.4675739484627175, + -0.9043728824190049, + -0.9675602710110005, + 1.012560313430148, + 0.08047390503749473, + 0.10958105746928024, + -1.1089214145879027, + -0.6803275828638772, + 0.3238795314519774, + 1.0082707155704338, + 0.0949440620922667, + -0.32069791862153574, + 0.730444545643361, + -0.4132797223686762, + 0.08074618046890324, + 0.30652463771685506, + 0.22163581519772008, + -0.8007704142836509, + -0.10563501060022991, + -1.1131642543050728, + -0.13555300608738632, + -0.28207194855306655, + -0.7680194441633573, + 0.5546473584862986, + 0.9074011370576573, + -0.5239359596456445, + 0.5839651201471265, + 0.7839720646600637, + -0.7970842175707351, + 0.43474100329953946, + -1.0706700029132352, + 0.03697382011460123, + -0.931250696165399, + 0.360075579911591, + -0.08882376119445384, + -0.589607000589516, + 0.33040461026310675, + -0.07419710368754553, + 0.2628970334325892, + -0.8046846836378863, + 1.1263553136607716, + 0.8484626855602659, + -0.09528479896997293, + -0.26086115901095713, + -0.904939236161272, + 0.5105288472758391, + -0.044989952000329056, + -0.8654894357871853, + 1.0036600952506174, + 1.050985156138883, + 0.5146626633365701, + -0.2861917806727243, + 0.41801581519798336, + -0.09504753722725343, + 0.4936249405248634, + 0.05488538686772187, + -0.8700158028464694, + 0.3060084400924658, + -0.7644097644254422, + 1.6509768090182904, + 0.07893240533541891, + -0.3371485542049521, + 1.156975810484945, + 0.14319680434597096, + -0.3203634311416935, + -0.5660505284391752, + -0.6170426333353194, + -0.9874119621612985, + -0.02076376815707847, + 0.1433024133572904, + -0.001336048960237034, + -0.6578615485245441, + 0.3939537139471049, + -0.020138517746786107, + -1.3218316026329249, + -0.1284665180698584, + 0.24233367662776967, + 1.9824549989409948, + -0.47546595245161566, + -0.09570277196127953, + -0.2139161871254592, + -0.28917573247360107, + 0.6716062331090861, + -0.0017393085056248104, + 0.8715943431102501, + -0.8802402485571954, + -0.11539115540758492, + 0.03054140625106302, + 0.37000348421464, + -1.0914148511963653, + 0.3475520463003323, + -1.1235733341831708, + -0.3070632599169776, + 1.4184881577953055, + -0.7764277269464427, + 0.5645443315989552, + -0.25326488183725454, + -0.3411948389350975, + -0.7201961067824945, + 0.5611711287500282, + 0.029465456828790804, + 0.1914560530566959, + 0.12283784201611943, + -0.7565194765184654, + 1.554802947482272, + -0.8148512469424934, + -0.5739152546224789, + -0.19407011211053546, + 0.3913057171128396, + -0.7148920636907814, + 0.3483079106863455, + 0.04421947991196336, + 0.4854989633426633, + -0.19043835457681318, + 0.37012804360539864, + 0.4687866879159493, + -0.7485505662462333, + -0.8301455733279911, + 1.1061472719720384, + 0.6111658811165368, + -0.8784159872393369, + 0.3296448735450702, + 0.9405078483395999, + -0.035379807550377854, + 1.2519350903935245, + -0.25064003782766175, + 0.713427245917066, + 1.0252514402629296, + -1.293846285135419, + 0.45040967742770593, + 0.4805717891799093, + -0.6850783423205864, + 0.08823059069135887, + 0.8273501734671956, + 0.8109054845604783, + 0.8363381149264987, + 0.8204146291350582, + 0.6294432188546892, + 0.1826696912787225, + 0.12293101270609731, + 0.4118851652361567, + -0.09651774973862194, + -0.3423731042278782, + 1.2577474984707493, + -1.8171478732066038, + -0.08416554017219506, + 1.381731063454478, + -0.9597641005960948, + -0.18905915457008463, + -0.03692196382981605, + -0.21469532383304382, + 1.0062876240026803, + 0.9248130432700498, + 0.17793343118362687, + 0.22449434667590606, + 1.1164217168654726, + 0.3668150330974217, + -0.41981065870053397, + -0.2233303966233545, + -0.4673926321230647, + -1.3849584756919646, + 0.1481190070620572, + 0.024598918545035566, + -0.7891834528256187, + -0.7825817739946559, + 0.4768470804358827, + -0.9897328284168524, + -0.334255898028088, + 0.10657609103571412, + 0.552224898613296, + -0.5852246821178494, + 0.19463866290387735, + 0.1543510915251605, + -0.03204328704413729, + 0.5487707959474943, + 0.9233419306306392, + 0.02917468734570423, + 0.6424498774109453, + 0.32905653021129727, + 0.25315815933274444, + -0.008170857404164893, + -0.6457632263316845, + 0.44141802942891634, + -0.1388729995669764, + 0.6866942957571021, + 0.195825011298127, + 1.7429116831692726, + -0.4797611843209409, + -0.325453533263531, + -0.003801540845491708, + 0.5117371432380605, + 1.7013133029693839, + -0.3286665944847144, + 0.6012850400097202, + 1.0140720006340298, + -0.8835259423726022, + 1.556312099909457, + -0.02266487691388939, + -0.43248272066319304, + -0.41655468514435523, + 0.6198883402247043, + -0.731550120174707, + 1.2506809590772494, + -0.1715376536924724, + 0.3659938484425762, + -0.03139703214974267, + 0.24345889885875463, + 0.9308138403082806, + 1.0799136316603517, + -0.45279267665171086, + 0.14861663186924534, + -1.3224850921216307, + 0.1548491124201422, + -0.523136746228905, + -0.08369597063624121, + 0.6000898952205294, + 0.45807081454611304, + 1.4214420403089834, + -1.1842827554965325, + -0.4746647635913183, + 0.9270167512565919, + 0.3933270372160252, + 0.9190582171212928, + -0.10579117425564262, + 0.7902559753187547, + 1.0403135025520962, + 0.8835505538939364, + -0.4797230169515335, + -0.8552933833283598, + -0.49155433491556144, + 0.0968290918710188, + 0.3324756929705791, + -0.2626245175407086, + 0.5996829795020312, + -0.21645005501652437, + -0.43453909983943706, + -0.2766026786506875, + -0.7202525479022936, + -1.2379452716187482, + -0.34424688008905424, + -0.9809469789191079, + 0.47894431600301834, + -0.6018668205342163, + 0.5393121069720134, + -0.32082091268888036, + -0.6162673398498182, + -1.2318549833547667, + -0.2745049661130077, + -0.7978387092693566, + -0.4881649121678243, + -1.5354029202814123, + -0.1752374932087464, + -0.8071796761464878, + -0.25800740445218245, + -0.7368569239816569, + 0.4702342694091765, + 1.2211731040564333, + -0.4389431778708901, + 0.11171779778145217, + -1.88654268442136, + -0.3545092156774006, + 0.7897727944933931, + 0.47312498091475996, + 1.0856296483184724, + 0.12076966717618282, + -0.22661593368982133, + -1.4719290277904051, + 0.5205291394413994, + 0.05637474221201101, + -0.05225106221832735, + -0.2001453576224704, + -0.6371435256572249, + -1.8563193757802703, + -0.08521039598469358, + 0.5650813939882395, + 0.3131648656020043, + 0.2946468971199408, + -0.013792038663241125, + 1.500246231931897, + -0.582098236601673, + 0.329926647810943, + -0.8745412062550058, + -1.134965370859406, + 0.4850007253927052, + 0.7577007141794824, + 0.6113765189106802, + -0.12276334309842706, + 0.5945830550817743, + 1.229974179652727, + -0.9826667417801267, + -0.231703047108116, + 0.606635318984383, + -1.0401456137029323, + 0.8204613185140475, + -0.5978095093810816, + 0.951120775477081, + 0.6517559812224247, + -1.145957287855198, + -0.5439394108070957, + 0.9275195935756497, + -0.8335547101705258, + 0.10568826215936188, + 1.630229084823943, + -0.09303458289866659, + -0.9321979254157955, + 0.6598632117334566, + -0.23608731118438253, + -0.4573019421830119, + -1.0452952435006595, + 0.09571308264799154, + -0.9054229131702658, + 0.5878655724128509, + 0.8326688769162389, + -0.39483191553537805, + 0.5817767407794986, + 1.3489333296140613, + 0.9431291911160674, + 0.6069361246798253, + 0.5269825257052063, + 0.07772303833379442, + 0.19088443990104156, + -1.4587782091960184, + 0.18305916163570993, + -0.5542983282234523, + 0.49086910520948723, + -0.07721350598604239, + 0.17016581192950408, + 0.8224316098663108, + 0.03874839777050268, + -0.9841472255743171, + -1.0034202716259601, + -0.7428673251334743, + -0.4523508140760706, + 1.5580946867612357, + -0.5350319789341146, + -0.30352160056322164, + -0.4625200393759016, + -0.2669075856231583, + 0.14563683099838134, + 0.028517604047529267, + -0.1312757788383631, + -0.3449716191165003, + -0.07114355768744793, + 0.9269882384764461, + -0.9476723812451734, + 1.7046139188259595, + 1.0589127315562392, + 0.8461183040250446, + -0.3334588611109272, + 0.10621701481026327, + 0.18634427828063466, + 0.40545281755863705, + 0.15506775842477444, + 0.5097511730519685, + -0.23613073399461582, + 0.10868305836408285, + -0.9735180890483002, + 0.09656353229606042, + -0.4475290597465769, + -0.31544150511912095, + -0.2291971565623386, + 0.2269410463081218, + -0.3879272811645546, + -0.6178455066630337, + 0.3551461821920009, + -0.8447361316819642, + 0.34846120416658616, + -0.14100619070388207, + -0.4184128367288558, + -0.4268112188996432, + 0.5704818078007571, + 0.0264524400499089, + 0.6342907068650715, + 0.6536605366385979, + 0.6859092172189757, + 0.05060236802544388, + -1.6725441427358234, + -0.23792819842588522, + 0.40446815971273814, + 0.30216099119326945, + -0.38799217811164155, + -0.27325499423341, + -0.8418904080912575, + 0.032400740021618184, + -1.5200254293352882, + -0.1748663477534164, + 0.3903153645275759, + 0.14616493584079318, + 0.24048754446368611, + -0.061984351284842955, + -0.24067656288712222, + 0.033159288257615153, + -0.752509546401384, + -0.4081650806706688, + -0.18443960336711973, + 0.2925194927676805, + 1.7212304511278378, + -0.08604369929148671, + -0.3186660582702458, + 0.2565569224852848, + -0.45761667612649914, + 0.554294916927056, + -0.34442364000951503, + -0.6594195294259827, + -0.05823396602940674, + -0.28080394816461446, + 0.34376184285169664, + 0.23093079771878997, + -0.332458023308733, + 1.2974023501929193, + -0.4969786844193175, + -0.8418607940437458, + -0.42366577809593825, + 0.1705655691797822, + -0.12778955595193478, + -0.5887691352260487, + 0.038202108991667226, + -0.22233938026864766, + 1.2603217519600833, + -0.5402353832256354, + -0.7054578493961903, + -1.043468684893464, + 0.9748938970764933, + -0.6111968487017386, + -0.8680847038104083, + 0.6753813756464225, + 1.0929247834211533, + -0.4815790113329555, + 0.12883827722803165, + -0.8157951533811354, + -1.8918365396414343, + 0.32726008995803035, + -1.5973033288464826, + -0.17159980793853225, + 0.7513252499201335, + 0.5183140999752861, + -0.8210759509082276, + 0.6542776457226581, + 0.4206438309651816, + -0.4832802644862663, + -0.43812655869020356, + -1.1166529193665045, + 0.4817700794767304, + 0.13089461546728667, + -1.6640063817852988, + 1.0182697281458706, + 0.23732160887642065, + 0.09442350768519793, + 0.4682053895479278, + 0.0025447393318453904, + -0.5507362090430624, + 0.6951641726401679, + 0.8142357431902297, + -1.0670863654804053, + -0.9437557961983467, + 0.10175596851610934, + -0.45916559103087357, + 0.32562855752529174, + 1.0680184029792386, + -0.20636086814998275, + -0.5970877796435924, + -7.221705488182924E-5, + 0.5262973841308263, + 0.9724201418527403, + -0.46410907049731603, + 0.3402928299855614, + 0.8733450488799538, + -0.936926559624971, + -1.2065926079133802, + 0.5951533491801347, + 0.596645331789714, + 1.0424619276685552, + 0.25382964904076344, + -0.04015896890563075, + 0.763263023032693, + -1.1877683170550144, + 0.650443836988411, + -0.8950289556626325, + -0.2548931275155301, + -0.5139812513906907, + -0.9654336795521736, + 0.043909275117828835, + 0.20499881881059379, + -0.08012938237905855, + 0.382862170756538, + 0.2157402195740094, + -0.5915084427900541, + 0.6360729914203259, + -0.47851331812391884, + 1.5905888162486952, + 1.159566172895383, + 0.012373735478452911, + 0.9054423382425489, + 0.4480861395984455, + 0.25226003732522656, + 0.4899270641800722, + 0.579588489203703, + -0.21752523013091632, + 1.1129728756768726, + -0.2005010588645229, + 0.7926258487128335, + -1.1965915680341093, + 1.3788496253497557, + 0.1637815084900439, + -0.09115904515355314, + -0.26582902112736834, + 0.17588755695748629, + -0.08877701510781989, + -0.5243222293172044, + 1.3228827040259454, + 0.9262253968627655, + -0.3642219777951094, + 0.9394620869346078, + -0.43660486716807206, + 0.4953157628927619, + -0.7723421963591677, + -0.48541145510522343, + -0.054991237173844854, + -0.0139640473626178, + -0.15390427958616212, + -0.8847154682327827, + 0.2644781330763411, + -1.5340670295970196, + -0.10139437525774743, + -0.41507435325236114, + -0.03687290518083887, + 0.573057740823546, + -0.26727576274516146, + 0.1701640722821519, + -0.6133558973236756, + -0.16844012935538402, + 0.39868349190910746, + 0.7049551474249233, + -1.1321895790540362, + -0.05110967024388022, + 0.6182728266948363, + 0.2762020714398501, + -0.8834875321076368, + 0.2846389328037131, + -0.56104606234374, + -0.6846952802270082, + -0.4781883122872362, + 0.010826369083624197, + -0.07509629771508321, + 0.1968676003566423, + -0.058513748262445736, + 0.5022393297488233, + 0.39714494241388065, + -0.07299524497932494, + -0.054941284522993176, + -0.21604656294470723, + -0.11572406660529093, + -0.20004933317864462, + 1.691342928080218, + -0.4603538039262368, + 0.6028132958324276, + 0.49616786128771867, + 1.0814896160822756, + -0.26778221864978924, + 0.9004006603275626, + 0.736202258910116, + 0.5275806519957436, + 1.0278237983134855, + -0.005677155242057378, + -0.7262329940786016, + -1.070893138874757, + -0.38846253830266575, + -0.33388036731163595, + 0.4600466216985231, + -0.4105340322234548, + 0.36798957862446013, + -0.6694003308037635, + -0.6670997399275698, + 0.9411495250035393, + -0.13007370666486043, + 0.7758201077390988, + -1.0776106362101352, + -0.6672579798065104, + 1.4634861428665331, + -0.1332078257585901, + -1.2719767315813422, + -0.8576768835811226, + 0.12702402682763983, + -0.28167300058842765, + -0.23026954594230756, + -0.778730835721499, + 0.8937666841241508, + -0.21906481848929044, + -0.614892245445127, + 0.7630724743414027, + 0.6977460954915252, + 0.37179797138145515, + 0.24412124707147168, + -0.4393232425770946, + 0.3162358047502925, + -0.7211636756544504, + -0.3052567350829913, + 0.40063358969952034, + 0.12963455517715036, + 1.25771065402064, + 0.7571889944751001, + 0.6432701928631567, + -0.35367063571316615, + 0.3919524218117187, + -0.9069188949114001, + 0.10086381763421036, + 0.4256431028971201, + -1.390796072988329, + -1.2866229133672462, + 1.3214376414531437, + 0.4812024297170675, + -1.5118876880328433, + 0.7087222702556554, + -0.11352191741722445, + 1.2926202980247248, + 0.1948402888638738, + 0.14741446097618244, + -0.9897888756675797, + -0.6951070732600582, + -0.0870312307140383, + -0.2863025077709952, + -0.7503912760239634, + -0.8466400723228316, + -0.22555190676165754, + -0.3285478508525733, + -0.16290579184944265, + 0.23407520613141036, + -0.33288216179029984, + -1.0566363058777646, + 0.7215202655112148, + -0.13322082703221255, + -0.16396940106114488, + 0.5021689036081144, + -0.9370511672385202, + 0.5568309644689932, + 0.6161213461104608, + 0.6990963739274302, + 0.7767868910247882, + 0.6112213292164408, + -0.38148618767509557, + 0.5976610034078136, + -0.31568667708929565, + 0.10858316496799149, + -1.276576872780308, + 0.3606515775058528, + 0.4193602035038773, + -1.1030256389469488, + 0.31921978924385824, + -0.3305559974225766, + -0.651604975552594, + -0.21358961708490257, + 1.4668453688093033, + 0.8188674107701006, + -0.20180378806875146, + -0.7755157160832096, + 0.09965010448958198, + -0.02716358484271662, + 0.39750600269690894, + 0.2851630213949631, + -0.5651609100663384, + 0.32335376936366794, + 0.4621799128767035, + 0.4657788147523565, + 0.48304281048629993, + 0.013515963731236891, + -0.41452575265496006, + 0.3134355354967543, + -1.3296126471255385, + 1.1348116591374986, + 1.1892960801077792, + -0.0980757144347182, + 0.4424327262604032, + -0.3096333201589782, + -0.5711572179100678, + -0.16467834680452953, + 1.141816786981025, + -0.07942045614147326, + 0.1716537383803548, + 0.17163129514175388, + 0.1236684981820409, + 0.7785970374958131, + 0.6666415073658389, + -0.33131428668648777, + 0.8162695189188831, + -1.1178787380133315, + -0.8778114640914576, + 0.2388932755061637, + -0.24711865534805946, + -0.5689536049909595, + -0.30611415220346505, + -1.2613648835590032, + 0.9556896786822446, + -0.665862892212003, + 0.2905831290534933, + 1.1991179133595626, + -0.49071760158144784, + 1.266506050939945, + -0.9001689015396086, + 0.07442147093250231, + 0.28081543258173947, + -0.32373835622923414, + 0.3191920010265317, + 0.6550334699806141, + -0.07896286308664, + -0.04602218651248663, + -0.7568471626991178, + -0.07920521101603116, + -0.12047677275366697, + 0.6511470895845551, + 0.5771195429659159, + -0.014108442041702465, + -0.3645042752568558, + 0.14625261215833835, + 0.5961775024555239, + 0.2651523371597429, + 1.2694988359873656, + -0.5341875593733184, + 1.4320329942549583, + 0.7053740455575617, + 1.2071494495862514, + -1.2026826351138888, + -1.6487546331638452, + -0.541827478797718, + -0.22098690700630497, + -0.3707518720381047, + -0.7903400892947574, + 0.10364251712556394, + 0.10270286132252841, + -0.41674249778139943, + 0.4140342032399112, + -0.7732117379292598, + 0.553492616948765, + 0.6388700890051959, + 0.695601742426622, + 0.04293972242380883, + -0.5080851422507405, + 0.6156352266155545, + -0.06942630109571854, + 1.2925103679782357, + 0.04861728561651028, + 0.5378494746219737, + 0.09153398967836698, + 0.4902890554875303, + 1.5826175052316718, + -0.1659654915870279, + -0.3534990399792605, + -0.5008924061707827, + -0.6222152940831637, + 0.001441417049529025, + 0.705847551472865, + -0.31683494095165804, + -0.8598133773631108, + 0.8210676479251459, + 0.7266320773365682, + -0.46186950873554883, + 0.5608454211403288, + 0.04212257851893451, + 0.02105224500485436, + -0.4832406663185655, + -1.495512137156534, + 0.38468400817593584, + -0.35411801233373674, + 0.4403240375362745, + -0.48011696560823097, + 0.22766015652660834, + -0.6743473635990247, + 1.894051172554497, + 0.6935924919980333, + 0.23529225748567076, + -0.4999119605852003, + -0.6790342351153206, + 0.5423980894756396, + -0.5603879155711682, + 0.10471997191355605, + 0.962801452544877, + -1.620135954194966, + 1.2524613682376227, + 1.0713253966522165, + -0.31306622976717347, + 0.433950218230435, + 0.13243492360627834, + -0.46740055261987484, + -0.1614078091896175, + 0.27029073629509137, + 0.41160239004916443, + 0.45540324619758926, + 0.01650911617648907, + -1.0756881765583888, + 0.40893785705568947, + 0.3858965319116341, + 0.8318624966651189, + 0.7785021796095742, + -0.2795497196034648, + 0.8527021766726255, + -0.8125360383984019, + -1.0912759615135452, + -0.3408029264214645, + -0.022282240923993026, + -0.404836950557368, + 0.977533175805398, + 0.5400257394719054, + -0.05289530513373186, + -0.02317416361325725, + -0.0027616132551210397, + 0.003965688041764556, + -1.143659069033356, + -0.45544578476185477, + 0.4645853474554458, + 1.5865935461805514, + -0.5276455537655175, + 0.5277439823590627, + -0.6459828353105976, + 0.9168903883276444, + -0.030341533067806657, + 0.5986712722149602, + -0.7528492333874813, + -0.46976646290795704, + -0.3219554200904396, + 0.5108510198951278, + 0.408955626237284, + 1.3428603516911706, + -0.36280836111588005, + 1.1202990991156383, + -0.13273464167668067, + -0.37149162721145407, + -0.23183846251560727, + 0.3743569184975426, + 0.08756649806745609, + -0.5094401884062024, + -0.6918649605104976, + -1.6878340135167225, + -0.35882879827458114, + -0.0441733076728191, + 0.13532595208957499, + -1.0315723956465428, + 0.7705358877935261, + 0.0018093532902564732, + 0.8626882413949419, + -1.4519382902075497, + 0.025687216969939253, + 1.477706085589478, + -0.4797970994506882, + -0.15558989924187527, + 0.6449457431127413, + -0.22926549884098077, + -0.6171220739593166, + -1.1998711832574562, + -0.6662526503766615, + -0.7595564471324655, + 0.0916171348781091, + 0.5349107389300212, + -0.9000672571611865, + -1.0907805072096322, + 1.2305089472456956, + 1.2902694767297846, + -0.14962069413088655, + 1.160398985885996, + 0.6910170623851727, + 1.3252503482232914, + -0.7602155401469415, + 0.5613634249457329, + 0.3686246284098914, + 0.8789843614058866, + 0.8558717468321526, + -0.03314134978565286, + 0.11053273879845435, + -0.1707885634290593, + -1.2545621153024888, + -1.6763226031354366, + 1.2743567978193533, + 0.6572187295124351, + -0.3397978419088825, + -0.301337600393316, + 0.13471333496508386, + -0.47292404246627245, + 1.2068798719595442, + -0.3431258089842669, + 0.5335059070180562, + 1.364555813127829, + 0.36895328865679844, + 0.6559977183023445, + 0.6157265884514821, + 0.024818705523119676, + -0.23847695328588212, + 0.616251440534213, + -1.243192378392851, + 0.33308929634692447, + -0.3433105120244716, + -0.5967056528190393, + 0.11386013343503229, + 0.5514991034717099, + 0.21477749080265335, + -0.7169813594074932, + -1.09800053602547, + 0.4817202359913052, + 1.469184617687773, + -0.6231797690165988, + 0.4379914292961987, + -0.8847412009325284, + -0.28670802314487187, + 0.9731223986453968, + -0.2965103940011041, + 0.34630100870604563, + -0.41142802665377476, + -0.0987422550921826, + 0.04498484538100011, + -0.9379994363406947, + -0.34663272772282167, + 1.836815118469638, + -0.6034133159874328, + -0.14459773614811153, + -0.0887308906434631, + 0.39417580682951436, + -0.00724354536510244, + 0.25490214853402804, + -0.6146496402696634, + -0.30683109347696474, + -1.1001297796123821, + 1.0497926401130295, + -0.6440123415926262, + 0.8898147430305169, + 0.7962547907699568, + -0.48302587520805756, + -0.1574529367775975, + 0.41530942894632084, + 0.08861745019882757, + -0.5834944601726361, + -1.0346374968920364, + 1.3950494864179055, + -0.2647032738158709, + 0.008775624153535996, + 0.17172240590015506, + 0.0683052866766208, + -0.011222781853770989, + 0.8707105076541362, + -0.12050081253891672, + 0.1518653999149061, + -0.42500906884500783, + 0.05808354545946904, + -0.13713259066784778, + 0.6970201184926418, + -0.24824346153018156, + -1.7006007307473943, + 0.22729465801920798, + -0.8851269493409654, + -0.4358148653596721, + 0.8056798338480583, + 1.463809924108246, + 0.04587839546096847, + -0.8558419837940718, + 0.5978845677846237, + -0.5081824641132909, + 0.7640278684544642, + 0.16568976146247805, + -0.6886514176668204, + 0.26110385521718543, + 0.36289717297489194, + -0.2493139519344772, + 0.978057519719013, + 0.11413480953484484, + -0.634406254656509, + 0.6340981210361982, + 0.32291395566169256, + -0.6878049767264294, + 0.14127030844244123, + -0.7365154953725991, + 0.4769650893094816, + 0.863416880658564, + 1.1674404898362583, + -0.6109182365424511, + -0.6868045891335992, + -0.06361109831573354, + -0.14001513163449744, + -1.385099069275414, + -0.6034613613556488, + -0.4650415288632003, + 0.25001521180116043, + 0.31661603432042185, + 0.8178611045721403, + 0.17644879002196706, + 0.05364191281847722, + 0.45668171057423657, + 1.0364570373351236, + 0.9525540656145315, + -0.49592512882409323, + 0.5262838726835137, + -0.12577223792487682, + 0.3037345562933145, + -0.677693304115602, + 0.539272355570669, + 0.6889044008276897, + -0.7666126790831939, + 0.10804200209852412, + 0.2368088299616745, + -0.08608767284589734, + 0.5740308900317976, + -0.44651601368010196, + -0.37967658886607797, + -0.039178384084516356, + -1.2457635233226636, + 0.5312622932961008, + 1.2704162057442134, + -0.6263080682421585, + -0.053947549860278145, + -0.34970533114162033, + -1.1806478226541328, + -0.16373168095234797, + -0.48172279623373443, + -0.3649198098380734, + 0.019025011398716624, + 0.7647734517522067, + -0.04308323727212713, + 0.8093607666759461, + 0.34876653289441867, + -0.2849468182204559, + -0.3413774775003602, + 0.6779671215520818, + 0.2980709715316988, + 0.2658157213428969, + 0.05500571048061165, + -0.3229936576931585, + -1.0738703831031091, + 1.0113738844926325, + -0.04986150424349363, + -0.5540998897570684, + -0.17159907638852454, + 1.6264470259456114, + 1.0693153152699653, + -0.6307253263810669, + 0.06783102456535736, + -0.4373747878413376, + 0.405230742707392, + 1.0217333374905635, + 0.825645379104167, + -0.02968628966375385, + 1.0714165058482916, + -0.5558086828641379, + -0.0026779347990618747, + 0.5747685982098251, + -0.09327579681993609, + 0.11086362345096092, + -0.6287689671910606, + 0.6144177147604392, + -0.10246309381106271, + -0.29101848939628644, + -1.1774773120714466, + 0.1844787550549397, + -0.1674803136157369, + -0.2743530893356679, + -0.6191842817695612, + 0.01983636395679388, + 0.7709154102398389, + 0.2454173070545025, + -0.3169337278597216, + 0.6866384157750863, + -0.501528084106169, + -0.1469660780573908, + 1.0332543014955762, + -0.021128692342363073, + 0.5013463359106646, + 1.0058837225453205, + -0.8951277545698741, + 0.06617307633697088, + -0.8356282411090258, + -0.8803029326288954, + 0.41182265727096196, + -0.44281843149947087, + 0.35946183351891214, + 0.13736724682152746, + -0.9491227404526681, + -0.4762023869619631, + -1.6889770923929126, + 0.3707929718216545, + 0.45946191546983256, + -0.5449616850441528, + -0.010056945306117834, + 0.24576104070297825, + 0.5827467930460816, + -1.402110060020355, + -0.13490175908391852, + -0.5375725490127, + -1.0361447765891567, + 0.2564649575379413, + -1.3179226550286178, + -1.048376646733955, + -0.7018207131408709, + 1.6118015662821445, + 0.14574678374355013, + 0.8862144447411281, + -1.269827117909097, + -0.41536276724489885, + 0.28756431633938495, + 0.5465668472193231, + -0.3772877154307233, + 1.236625703546004, + 0.33661289135489497, + -0.32760345808792224, + -0.6993497400085746, + 0.29309863839767086, + 0.01599339334097133, + -0.12156922446443551, + -0.8517737481424241, + -0.3627178782380739, + -0.43584759739824225, + -1.8552863609022299, + -0.01819948769871202, + -0.1789248040584536, + -0.31464447463046624, + -0.5386754021833876, + 0.4594969496900089, + -0.10017802253605256, + -1.498774029830221, + -0.25761882825186966, + 0.2927459392625371, + 0.6782423604926814, + -1.1424031535352634, + 1.00356850070115, + 0.4330179227158189, + 0.6501032778430907, + -0.16416233161805538, + 1.7107063241857527, + -0.0069171425972216795, + 0.2495321947454131, + 0.23417140569164238, + 0.050230997625114876, + 1.0012611611022246, + -0.42416337609267, + 1.704553601212991, + 0.09528875963484848, + 1.1415735987267845, + -0.6016510265145172, + 0.2954851939024445, + -0.44215778719748056, + 0.6738360164412168, + -0.4570724557171487, + 0.7403456283174012, + 1.0808762268349639, + 0.21284658086398472, + -0.5526778286743338, + -0.2806058973771006, + -1.9124003960346556, + -0.650629494472764, + 0.7080911814436216, + 0.7108724474422087, + -0.29292931863167837, + -0.9697023100979383, + 1.0319608749741171, + 0.07625737351567274, + 0.7096309994366847, + -0.4932960867502261, + -0.2142332273442592, + -0.13319859903668715, + -0.17227316453883335, + -0.5398415873616248, + -0.9297936555389112, + -0.775032166318096, + -0.4806679035358692, + 0.14206807599142754, + 0.43053349492144666, + -1.468448684423724, + 0.802306520728446, + 0.633857432398408, + 0.20305483270232752, + -0.42179369585728377, + -0.14440543186501842, + 0.21546537812306704, + -0.08328914194124926, + 0.19795634068622736, + 0.5467490281363835, + -0.7254654045560484, + 0.08179159614902685, + -0.6752167703830354, + -0.2539008225914516, + 1.1438031259982222, + -0.17513199787179815, + 0.4597780658484498, + -0.6527806962876923, + -0.11331054951891281, + -0.6133651720577485, + 1.939424455563487, + -1.6505786125304014, + -0.24099541867544003, + -0.47160339839903187, + 0.27944514613507243, + -1.880207154532335, + 0.4992751723088368, + -0.16232583903559317, + 0.3271341564114106, + 0.44554112017225267, + -0.18890978524205865, + 0.6636752374725944, + -0.6111119270505022, + 0.29766492146077006, + 0.043822728147528404, + 0.7274799587639498, + -0.10301766351201243, + 0.260620008229859, + -1.1822792987219213, + -0.3680857836010624, + -0.11394686831323668, + -0.8987599051450226, + 1.204204170318274, + 0.9735543495302659, + 1.5995201674789492, + 0.17248343673566588, + 0.2357520705308249, + 0.33443764537567094, + -0.151969451525408, + 0.6288149823711832, + 0.28270123798421487, + 0.4042577899173082, + 0.3523255301741432, + 0.6528594765661849, + -0.5229710718962383, + -0.4880326565988287, + 0.29116256537580576, + -0.30318769146311214, + 0.8676714892224625, + 1.3457108971565064, + 0.6571147815273161, + 0.7485142861526777, + 0.21419807442367986, + 0.22405894175146143, + -0.38395510984710646, + 0.34668333819694774, + -0.5015830361769286, + 0.7333891625686243, + 1.5452388838721227, + 0.6251048411032256, + 0.6861744458786725, + 0.507654012199629, + 1.0449440075599314, + -0.3011716151892002, + 0.5591800953998014, + 0.025702764500421877, + 0.5457378980062679, + 0.7605489898068066, + 0.37043610598208865, + 0.4203383058482343, + 0.4824288891100713, + -1.5614420601114767, + 0.7055592096369594, + 0.04381539902174389, + 1.2230817389662179, + 0.5716214347230976, + -0.8383901872880717, + 1.0850389328089158, + -1.656748966221915, + 0.24069949529469964, + 0.4706424413791538, + -1.6880279589095348, + 0.26948152520303, + 0.03733248763240174, + 0.5526019039104985, + 0.30257314242551736, + 0.3165865824631761, + 0.006239274487594637, + 1.459386885620723, + 0.17072608837078548, + -1.1288103995009755, + -0.34986082161226106, + -0.6584821157720068, + 1.1276013145720352, + 0.19147817260179392, + -1.1203700067337516, + 1.1048793112629671, + 1.0275371407344194, + 0.811762090834272, + 0.11711747990774676, + 0.35486884731773893, + -0.16564812677747653, + 0.22664687741538886, + 0.5164326879155503, + 1.4804977770893337, + -0.38775862789834203, + -0.5420971095181573, + -0.6607785505490398, + 0.1685530617555328, + 0.8882608875020936, + -0.7040438521861772, + 0.6216321399893534, + 0.15680636975707074, + 0.10043197470186134, + 0.42608197464647857, + -0.6999762676710527, + 0.13384363447658693, + 0.9365666604119369, + 0.17139054295183861, + -0.0370072329176551, + 0.7217404006146203, + -0.1682598617319071, + 0.2582088833876176, + 1.3057069339073737, + 1.4755851348484728, + -0.543097671604453, + -0.13466631950096325, + -0.8218050788043629, + -0.19006469935825876, + 0.3400289688235797, + 0.35085847858916386, + 0.10856646268393547, + -0.10093009103757822, + 0.09262717069375398, + 0.18021142785585864, + 0.6792246754229615, + 0.3275301750484162, + -1.0266358407277578, + 0.08410200417304944, + 0.5965067509331718, + 0.4943831490422964, + -0.44366546483862335, + 0.16480717972854295, + 1.0831550997228423, + 0.23377219919722722, + 0.5188579073898719, + 0.8897785396541407, + -0.3843518962414784, + -0.8099699553573609, + -0.6459204272691679, + 0.03370175103292529, + -0.2072742532595008, + -0.47961589947735744, + 0.7198204369692695, + 1.4173002958601124, + -0.03538514885028797, + 0.42189086701610756, + -1.0856896844540747, + -0.6150104459618654, + 0.25804326135812294, + -0.7972989936025767, + -0.14919517876535188, + -0.1194668263316388, + -0.8816152087938258, + -0.2466234945327073, + -1.0857886289589422, + 0.42872189375876363, + 0.03043533554741585, + -1.102363070442998, + -0.44344579787996363, + -1.3590266055236855, + -0.9796260788698102, + -0.9937551223987735, + -0.20914201896780638, + 0.3788667877224138, + 0.600793231785851, + 0.13863505228890183, + 0.4395408202739831, + -0.41188277657485955, + 0.175538347370969, + 0.2825312435681472, + 0.07051990668833226, + 0.26739890584452164, + -0.13224755228071478, + 0.98938068381416, + -0.03914084747462618, + -0.3769726807170498, + -1.0062489666449284, + 0.48269570452696936, + -0.8365604752348919, + -0.6499874708729183, + 0.4316159792554948, + -0.46709761832870544, + 0.6507708961778156, + 1.3775449171217797, + -0.21609555477641648, + 0.7694851982649235, + 0.5776739873879951, + 1.2493349593418734, + -1.9823515529374676, + 0.4412264126175316, + -1.258578263031326, + -1.276503704789019, + 0.33624555989555166, + -1.2440442143186252, + 0.025276567037369812, + 0.11817715549638043, + 0.5147250827776572, + 0.6749329521309559, + 1.1888125443509412, + -1.2573173077098607, + -0.07352576917849414, + -0.34900405384805916, + -0.45943656156190077, + -0.23340091110521363, + 0.5239590926554482, + -0.18268715252602966, + 0.33870121220999483, + 0.18474127269489835, + -0.7166091479942627, + -0.10958471382362486, + 0.8571464170613569, + -0.42114842844934797, + 0.40578473194442216, + -0.1959182049019959, + 0.16771568632428074, + -0.05347534726603301, + -1.0596404812642413, + -1.3415217914046722, + -0.6969239041141013, + -0.008409348402946762, + -0.08343707143062398, + 0.9869150172023041, + 0.5957006364348509, + 0.4415957693523004, + -0.9190621682436384, + 0.4248674726143014, + 0.40614736479081076, + -0.5684524449310908, + -0.08134064821049443, + -0.17490142039757842, + -0.40152296998937087, + 0.3347882209681661, + -1.1612433451184097, + -0.4141990443083995, + -0.7380683045657223, + 0.4171070078787866, + 0.9746769875232882, + 1.3774225681972483, + -0.8963393135071929, + 0.043655568478565346, + 0.5266667746238262, + 0.19931107265171233, + -0.5383560877072283, + 1.3172446498253791, + -1.106976616706722, + 1.0889901423918187, + 1.1473624868601462, + -0.14246629063525193, + -0.08959871941095401, + 0.37562426750433614, + 0.3683210613151284, + -1.9200737206356393, + 0.5387816095706531, + -0.33303004799590236, + 0.13727449949842846, + 0.6586027835560074, + -0.6895042974634813, + 0.8058981137222329, + -0.7613757762998404, + 0.4734251197408254, + 1.4395589749239177, + 0.15881505049665193, + 1.2958281402647558, + 0.16295759496698137, + -0.28058521326813723, + -0.9302811515874705, + 0.8625487632674662, + -0.8652442206910931, + 0.46570736455545747, + 1.0589597146855825, + -0.8156791449698058, + 0.8209243440402041, + -0.45519467024984583, + -0.10390915323073917, + 0.4479966491763664, + 0.3451210947562403, + -1.7737153683133875, + -0.17636994685759516, + 0.18148714971215532, + 1.015533962372661, + 0.11272363094786822, + 0.28471241209254616, + 0.442693784078425, + 0.6752769407411409, + -1.1382802611924947, + -0.653951355151634, + -0.2096696046777806, + 0.1878834131910243, + -0.9421968655769946, + 0.5440813434643369, + -0.09257072752759839, + 0.887780824397619, + 0.47695531997454205, + -1.0420567756599581, + 0.5177666404177957, + -0.6646335513005655, + 0.21821176353393673, + 1.2006463606083115, + -0.2511689878298143, + -0.3718878640173751, + -0.38004466286154903, + 0.32507411450812407, + -0.8674039361060987, + -1.254642590069592, + -0.6439649301160513, + -0.15623837999185514, + 0.20386840824106625, + 0.06881217523937533, + -0.4188818005967102, + 0.5457065038116408, + -0.7402349993095853, + 0.6989146139148867, + 0.45807712873958323, + -0.08849137470673604, + -0.8505181613373801, + 0.27211779815354903, + -0.762629410812476, + -0.11051969211837254, + -0.6216004614403103, + -0.19211360697387697, + 0.3415279819769363, + -1.4580309568865752, + -0.511598841172685, + 0.15516376136992585, + 0.8177022937802579, + 0.5607864259689417, + -0.8090693864710219, + -0.019998959266655028, + 1.1470266914555178, + -0.027483452522784613, + 0.1602522261186996, + -1.0569332107815836, + -0.13654434943341323, + 0.03571611445365606, + 0.23957626123112877, + -0.8010845468022763, + 0.6005808735621354, + 0.44846568981843665, + 0.39537532811471066, + -0.23020122357041423, + -0.5995363314841939, + -0.03141508817679958, + 0.8539242498753956, + 0.6364606337454376, + -0.1241093694006147, + 0.47057723281441227, + -0.8194382597914869, + -0.5879606423786545, + -0.5177021290696114, + -1.3360403423125802, + -0.6307418087462769, + 0.6335532894068775, + -1.2702684245530187, + 0.03495625529885746, + -0.912920845084439, + 0.9113164953465323, + 1.4344321308486567, + -1.0230686371430142, + -1.0783418027999816, + 0.7857519789748478, + -0.2797140660591689, + -0.9595816970425246, + 1.0833752397291072, + 0.09190437726713756, + -0.2657340051235412, + -1.1092185160305332, + -0.7018615672642107, + 0.06884397991767208, + -0.4708747641879975, + 1.1247650821435053, + -0.542506269621344, + -0.14874047730080064, + -1.0132519706607686, + 0.795075272251355, + -1.5585234655244997, + 1.4592779128971338, + 0.5265927483482562, + -0.13477696345414453, + -0.4870209682330952, + -1.5263957840056506, + 0.5500199908617637, + 0.5504457623613507, + 0.44065167570498737, + -0.9375920645880638, + -0.3007648340646733, + 0.13190501802282506, + 0.49265409259624643, + 0.440960072678645, + 0.5657969289063626, + -0.017744853008855956, + 0.22767497227652464, + 0.28915794994351474, + 0.2597793585379348, + -0.24921543766311016, + -0.43967373100249796, + -0.49439389350587126, + -0.3259441374121739, + -0.5870609501884569, + -0.36325146315970674, + 0.9006571517649166, + 0.6725293981409329, + -0.8802755648983007, + 0.5635031969769634, + -0.47526362464173105, + 0.20617678053643557, + 0.7744979345870414, + 0.41095824954013527, + 0.2452550101381799, + -0.4603798967541705, + 1.1849945836971774, + 0.32270582156063315, + 1.1683370598810907, + -0.6582671042035123, + -0.22271420244707932, + -0.18318772335376476, + -0.0853665116731709, + 0.9538519041716909, + 0.17191919718047557, + -0.19247868378071278, + -0.33553689704657275, + -0.09168092473499227, + -0.6993444901779324, + 0.5118585264229106, + -0.20640781876277492, + -0.2124673512786854, + -0.4370308339002773, + 1.0929052973749114, + -0.5234707905969439, + -0.45213792376834755, + 0.514726395405884, + 0.5170116656661623, + -1.0138774135369069, + 0.205219338846993, + 0.42024610993185085, + -0.933330602539649, + 0.6019790571655594, + -0.17927326379312897, + -0.8345804964427702, + 0.8128120796992118, + -0.5528101157391935, + 0.45889585262336513, + 0.05316747284812891, + 0.7667384801493857, + 0.27315857030093993, + -0.796552595494635, + 0.2801647483803801, + -0.022379026463224733, + 0.32359866029995066, + 0.06797681481522132, + -0.7120389307732714, + -0.2905210547175941, + 1.044061401134785, + 0.44178279697744693, + 0.2912870518280602, + 1.2500042913056741, + -0.4469603759996935, + -0.1576186555377123, + -0.7461508660807598, + 0.04008789282974856, + -1.3643282819288993, + -0.9135488602387324, + -0.13106087475989062, + -0.560500336409599, + 0.14086825551531174, + 0.4961438388506739, + -0.9699983947134555, + -0.1468420266084688, + 1.2351059099557244, + 0.12260843892318446, + 0.4843693987712069, + -0.6485584708125898, + -0.6816308821296627, + 0.21994171537319265, + -0.20808330924290538, + 0.4723726186281739, + 0.4114116138766932, + 0.09554903314284824, + -0.24903887138961342, + -0.45515686872768635, + 1.5038804801194097, + -0.4609032793023391, + 0.7474106413425582, + -1.519541375540002, + 0.16185663109397871, + 0.709485458666769, + -0.7890380407003529, + -0.296016530558015, + 0.4030482633157385, + -0.8786334011052611, + -0.09508681328050372, + -0.7176268550489104, + -0.6887679968115785, + 0.6655405968195924, + -0.8173010604731487, + -0.6516470387106671, + -1.2229184287640962, + 0.6337575116551283, + -0.46582199315354555, + -0.07495209880729858, + -0.4744084776187756, + 0.617096532803834, + -0.33525631428447067, + 0.22307490691984316, + 0.7514293537311364, + -0.051795605687575796, + 0.9835859300983009, + -1.2409730458082904, + 1.4098876312221045, + -0.708365730438222, + 0.3198853568072665, + -0.025855684881649018, + -0.7567335407173967, + -0.7946485973501106, + 0.09245750971461053, + -0.36309966338203736, + 0.7737798377977531, + 0.35541157574109666, + -0.487704759588691, + 0.120250654218864, + 0.23387134375596239, + 0.41139890237540655, + -0.6823643049829662, + -0.4120669885109566, + 0.7471321708387473, + -0.2935017921143151, + 1.9477210603518926, + 0.18941937682026433, + -0.6880637445096437, + -0.7473019109607022, + -1.0178355381563682, + 0.30497753871849376, + -0.31801876911060434, + 0.4027557595993629, + -0.8172255539404824, + -0.17554974515502328, + -0.5231772177378161, + -0.3923367635937902, + -0.9828887867418414, + -0.04768581958493587, + -1.4447966076351968, + -1.4955087666660773, + 0.8185031102857537, + -0.07950799560947115, + -1.0384843576569232, + 0.07226499523764943, + 0.5844688251437371, + -0.8449675783316928, + 0.6079431669058791, + -0.064071929198659, + 0.957605940162356, + 0.17347666036146311, + 0.15192622037920334, + -0.18746714670755665, + 0.5449497835597348, + -0.08607540249234172, + -0.8338153338530252, + 0.8270284796592066, + -0.5312195605038627, + -0.15633082730336556, + 0.46756955115851395, + -0.7085921495834842, + 0.1782348858178017, + -0.6484141338787993, + 1.0877135909109985, + 0.032887252982587954, + -0.46179808994494426, + -1.0059218999470563, + -0.47647271043431155, + 0.6878743865659501, + -0.2944067810877922, + -0.1487698473778369, + -0.32883459168138335, + -0.08856102628019707, + -0.007070434592180925, + 0.45149492553156234, + 0.6260071160958053, + 0.13448282872723766, + 0.8645765743049549, + 0.6348882131134127, + -0.8009188518677912, + 0.44933106748828655, + 0.4054330078796212, + 0.10623495501482573, + 0.18197768787166047, + -0.0287018638657726, + -1.5025208969133306, + 0.4547928513472485, + 0.2652287260563519, + -0.7701648465933414, + 0.7520110820276167, + 0.05822052918227561, + 0.16239379330652287, + -0.6206392436178785, + 0.39478689984126575, + -0.046649308007700695, + -0.7335416620414015, + 0.4343940007360643, + -0.08648189048158286, + -0.6337772188097794, + -0.12545618966121658, + 0.6695071383528649, + -0.2679270064988827, + -0.29174320895642525, + 0.4244204011838225, + 0.372151022428277, + -0.028290757395523846, + 0.10167843601370398, + -1.1647709095175465, + 0.40085692406472984, + -1.3553283206161502, + -0.16171665438328162, + -0.6795551632785277, + 0.7973058861315102, + 0.42289971907823976, + -0.0865856970799928, + 0.1384680487202889, + 0.1366697495720008, + 0.45737332768549027, + -0.4744948982194415, + -0.6432046350027784, + 0.08382286095519595, + -0.7566522036349137, + 1.095756422930531, + 0.30336793038163806, + -1.494989717857403, + -0.5262854732894316, + 0.491181284674469, + 1.1631264584346572, + 0.6003227334065553, + -1.5811133384232856, + 0.7378483489042135, + -0.13410279961426894, + 1.782033783455403, + 0.3295842260334803, + 0.13288173621555735, + -0.13926254124875054, + -0.7743302494354012, + 0.7630967726129286, + 0.5831233642637481, + -0.7417388561244692, + 0.21777528169263277, + 0.2573793827852451, + 0.003786149947321914, + -0.16821901890106397, + -0.06700242059667874, + -0.42660698368528827, + -0.3013879619144234, + 0.20182656457702816, + 0.29667203698424827, + -0.64500915122857, + -0.49665263950913413, + -0.21863623520689615, + -0.18659147270617737, + -0.6308473130743879, + -0.7320818310351966, + -1.4792819722720005, + -0.3844977691149992, + -0.1186995330955712, + 0.8907748230131526, + 0.09408590469436628, + 0.03262183054141979, + -0.32736857773833344, + 1.4114778444374756, + -0.887770452020757, + -0.4208985543877891, + -0.5150366008922029, + -0.4483642060160712, + -0.8669163552614383, + -0.4979233923867889, + 0.7502139611881247, + 0.01126991792633718, + -0.33822260317647773, + 0.14326232585378915, + -1.0929870727111446, + 1.2748295879788156, + 0.877858521813293, + 0.2275345518560922, + 0.6572926015872191, + 0.5296422112325998, + -1.7269636605339593, + -0.1698725077360964, + 1.0115890069543858, + -0.505318248973872, + 0.052854531815035424, + 0.5402031289504291, + -1.0744303940623001, + -0.12555524411812694, + -0.20270643824914011, + 0.15118391940765333, + 0.12816260934015888, + 0.3232508516578582, + 1.741827199995256, + 0.3416234022817028, + 0.45570298646621, + 0.1589917816708061, + -0.16789762398829886, + 0.326917208610625, + -0.5957792145744776, + 0.6038832498962073, + -0.5919875970841058, + -0.5497515422128213, + -0.3948507344762221, + 0.6229164197532354, + -0.8445024799884822, + -0.5586996620181613, + 1.099462252540485, + -0.2493897762270888, + -1.501687288968268, + 0.169108029003293, + -0.5649784185641539, + 0.08710214029005449, + 0.44195965301915985, + -0.4362932625337126, + 0.7293327335514227, + -0.4687090221732762, + -0.21133685968645427, + 0.49337572096989213, + -0.47043552963286495, + 0.18177422592313994, + -0.28514331836735357, + -0.02750264015627598, + 0.3608052381820234, + 1.1501023492419027, + 0.26837224713187996, + -0.24893385716268618, + -1.551846031506678, + 0.6838670167097874, + -0.8697934806588505, + -1.172426029739389, + 0.59388925598598, + 0.3534194205587271, + -0.6317583168434208, + 0.5936761284688883, + -0.8887417203991967, + -0.10285346393096785, + -0.2185920221784419, + -0.5681556476474232, + 0.5818278316896505, + 1.0549000207100048, + -0.6488008701255903, + -0.22743518588912037, + -0.0067933598463363574, + 0.7297378251946646, + 0.14354649297838437, + -0.07096764473162452, + 0.22247993126132362, + 0.36951684822844694, + -1.2061679069980058, + -0.23614820766228287, + -0.5534824321545436, + 0.3392409841264721, + 0.5530066261064808, + -0.6989295492748994, + -0.105305410948089, + 0.0821394905945466, + -0.484071853504418, + -0.012073875641182251, + -0.16753299252723158, + -1.2169461245174094, + 0.22894041506112112, + 1.0545993736066592, + 0.34340982664847075, + 0.2568966825322024, + 1.1520238448100169, + -0.982027688953476, + -1.110677322604094, + 0.534036588843534, + 0.8239711630468629, + -1.1938562809004036, + -1.0452674567515015, + 0.012391949699053197, + 1.790988091980898, + 0.2880074509159579, + -0.43313500904275687, + -0.38909470760996406, + 0.15479372896656407, + 1.658174304482488, + 0.1557585818501974, + -1.3281092737023084, + 0.04176109537615244, + -1.3326242236069326, + 0.25525776316232884, + -0.31493631722085474, + 0.20392495300116165, + -1.3798765823107988, + 1.4078049216858826, + -0.6979660601796707, + 0.7656330388282272, + 0.5132142610430969, + -0.3779369742344209, + 0.7088732267292857, + -0.15396585708164076, + 0.7296521381512034, + -0.7571185352325495, + -0.2850561925441809, + 0.13751314665896863, + 0.5446277584052632, + 0.22229407107197166, + -0.857807795081183, + -0.6953838521636753, + -0.32890304263246367, + -0.0900183764203857, + -0.3553980750755802, + -0.786527706592354, + 0.7984301391339762, + -0.22888055378864933, + -0.6242990785864029, + -1.1149744381404254, + -0.1941442803624044, + 0.27873070048941523, + -0.3199137776521092, + 1.2348911658676116, + 0.6734780386174298, + 0.49901366023337523, + 0.48014697399426376, + -0.29337507791582723, + 0.08225880554224127, + 0.8802983550713595, + 0.2583396545018127, + 1.360760852786303, + -0.11397400625150897, + 0.2076211081412361, + -0.16968684561090452, + -1.2872331768052119, + 0.42843779103301133, + 0.105760570509113, + -1.318081752075104, + 0.12270112454007033, + -0.1670376559827446, + 1.8337642201953412, + 0.6287265558019409, + 1.0560290284503675, + 0.6204594049806603, + 0.49064975727960214, + 0.5335938634020342, + -0.17171248564640132, + -0.8859589895230483, + -0.1887612329412379, + 1.2093862935150943, + 0.39278309219825397, + 1.1583416453387914, + -0.19082921081086454, + -0.8679684665533811, + 0.28272223128890744, + -0.5770159147117425, + 0.08349910530716644, + 0.9638535694734324, + 0.09839770948199071, + -0.4365887061292041, + 0.22759691772010449, + -1.1170667856430199, + -1.4130917911140064, + 0.61054208330673, + -1.2782577982410674, + -0.6897553881808179, + -1.0755752259205904, + 0.39676924636786426, + 0.085340102215184, + 0.7895209736012152, + 0.6785987100523093, + 0.7660605388686503, + 0.716632850027738, + 1.536657982451204, + 0.5354949338640931, + 0.5849263806173282, + 0.9235120885781783, + 0.0073301283589284755, + -0.45651809207140365, + -0.19855049591880963, + 1.2511664484726925, + 0.18261898290762116, + -0.39675272129572864, + -0.46111030923353213, + -0.6631755414878778, + 1.2942665232263015, + 1.5265229748149898, + 0.37251649000892567, + -0.6311914588727653, + 0.7762124526561299, + 0.02564113128862375, + 0.54275630934215, + -1.0669167820821417, + -0.29312322701453786, + 0.0339035935241595, + -0.27995180273988474, + 0.09808724011445961, + -0.6409182837998908, + 0.7751724122592102, + 0.2897926067126505, + 0.23292539591621111, + 1.0844882237080036, + 0.12547279629063463, + -0.9749542137728557, + 0.4097203878653818, + -0.48106415539749003, + -0.7896684988022917, + 0.9932295438398961, + -0.35375782706682335, + 0.9620456941374884, + -0.004284409008962956, + 0.6061433536297258, + 0.6519451670486877, + -0.2831849339205853, + -1.024618863049489, + -1.3465800467212743, + -0.275502399844482, + 1.2758175889755348, + 0.8642979420500911, + -0.6831402515101104, + -0.1299602296215201, + -0.36954859343902113, + 0.8470067980444513, + -0.7430118705587456, + 0.4392053235162229, + 0.059945729432058246, + 0.09751160011383044, + 0.19934629546990731, + -0.805858710291059, + 0.5446852852221592, + -0.34341736939092, + -1.742918009707482, + -0.5118832251383038, + 1.0485115602142419, + -0.25021696301938795, + 0.7271196860728469, + 0.6863182624183645, + 0.9619564008580614, + -0.2679554447163933, + -0.7889447984233433, + 0.3374208792519053, + -0.4142142290797021, + -0.7755113019021964, + 0.7100809833265777, + 1.1196911958336326, + -0.22194068827805763, + -0.34241303777300375, + -0.7032655989343063, + -0.1002641898738657, + -0.42116162258080564, + 0.7817906714863255, + -0.7713288098740732, + 0.19738741564697848, + -0.8856288316343764, + -0.41518642087234753, + -1.1392347163406686, + -0.3055898603808139, + -0.427998364680652, + 0.21427978758689079, + 0.17622857435179462, + 0.7153434973251428, + 0.7805362456730126, + 1.0166818888300564, + -0.9968423248629525, + -1.6674460931557895, + 0.12097345192552514, + -1.433588529035579, + 0.1866015340290623, + 0.6812848067407216, + 1.0875227350803296, + 0.7329419581019998, + 1.0618228165637948, + -1.1329908921679963, + 1.4995446836244455, + -0.19674384454030844, + 0.6027676753781694, + -0.5729045854908157, + 0.5216488685621402, + -0.18964967986589032, + 1.0425528439480078, + 0.4452609518242411, + -0.5437254207265879, + 0.23183896644583693, + 0.6214683125766522, + 0.548003534759076, + 0.6933710525855452, + -0.4093869648773805, + 1.7478644624320243, + -0.3403212260209395, + 0.6454034746342057, + 0.17918161668739957, + 0.4779810248130753, + 0.4853929689589163, + 0.22313485015808393, + 1.1607295342678603, + 0.23900836908466175, + -0.09228624052635327, + 0.21274239071367923, + -0.4227574850932684, + -0.5861837454121791, + -0.2678852404988809, + 0.16400568180241046, + 0.32978340855294747, + -1.2397601104998248, + -0.36486940073256635, + -0.434365724965236, + 0.7798797873080758, + 0.13714473215510303, + -0.939341183426802, + 0.6862548510164266, + 0.5481774599289254, + -1.7034450855161336, + 0.30384285221156265, + 0.5094614811121776, + -0.1095223895181512, + -0.35477386204301936, + -1.3972198718583297, + 0.05063883635947702, + 0.6342892712342395, + 0.7703223929972239, + 1.6263936968494375, + 0.08162939432711318, + -1.2034505781405733, + -0.1522901166335204, + -0.23967570488304796, + 0.05864981032249405, + -0.3755534766547522, + 0.19666446489635755, + -0.722281575910078, + -1.414641105194653, + 0.37611682503677013, + 0.6859064381817727, + -0.3942440906781303, + -0.08032439390213188, + -0.0746648243100351, + -0.38664232045466157, + -0.42683703228878794, + 0.04587421176051916, + -0.6350259933041658, + -0.1349188888618292, + 1.8351158647130867, + -0.5614924084028017, + 0.008988373239524278, + -0.7227675285577622, + 0.8956068593703579, + -0.2473751005248778, + 1.2857864043732363, + -0.44439064832423575, + -0.15238171081436783, + -0.9277796631011815, + 0.6757166398331408, + 1.0755842509859732, + -0.1371431378292294, + 1.235674453873236, + 0.4355603659777167, + 0.7964378335587106, + -0.9716440540645402, + -0.6068508935641467, + 0.3507383633709002, + -0.3004386474382056, + 0.4160813090310218, + 0.16181565557372352, + -1.1263100545724982, + -0.1141876618179268, + 0.973582488649263, + 0.10767480588268583, + 0.42684666173218133, + -0.33422994959013846, + -0.1371949076477445, + 0.575451373586981, + 0.9285007522877098, + 0.6096154674716404, + 0.8796619789974928, + 1.0460569176405394, + 1.5742926627077585, + -0.8269105697481164, + 1.011404395579523, + 0.24333758328691038, + -0.053843648769213895, + 0.46531450243318273, + 0.5690763937096683, + 1.0899994902343573, + -0.4145019374607618, + -1.2394445890146626, + 0.18211262887310523, + 0.04789052950460668, + -1.0446934921248565, + 1.0430287759311112, + -0.36871280348967295, + -0.20368450759922965, + 0.05824646408499881, + 0.06487757879587182, + 0.9580758321617238, + -0.5105876054552335, + -0.4780097471697111, + 0.08805232765172745, + 0.47800190542816745, + 0.4102964453458382, + -0.10051329503533676, + -0.17469221314531105, + 0.96986689061758, + -0.19426565700491252, + 0.08539869342090176, + 0.6020035804535987, + -0.530758478905817, + 0.5057976339606142, + -0.7354526974478715, + -1.5145045841543336, + -0.3397487854723848, + 0.3782907764046291, + -0.5967286384999242, + 0.5291424905988888, + -0.27492678985828883, + 0.829985099846248, + 0.08062083857282856, + -0.5841930675683065, + -1.0975400643288524, + -1.059879831495068, + 0.881701157768825, + -0.8457438950472191, + -0.4865020634894715, + -0.8650690747940056, + -0.12523741765634708, + -0.1640459562877513, + -0.6560056977029451, + 0.5690359817092602, + -0.2845604206126708, + 0.02028649722684742, + 1.1415596912974224, + 0.6314388992873794, + -0.06126520733316677, + -0.04017963053767146, + -0.5175400452724328, + -0.26673652425473515, + 0.18383659148568043, + 0.40324803809613485, + -0.7570483441490774, + -0.7763989560767288, + 1.5054643656234405, + -0.394244451538259, + -1.49753181690139, + -0.5464353936976939, + -0.46151299879399615, + 1.1729121262216853, + -0.8843604942519119, + 0.5720494787896766, + -0.66004131254414, + 0.18610505723116344, + 0.5496771875902983, + 1.9336714186801525, + -0.38601264685275194, + 0.7013398204743259, + 0.41148997849019997, + -0.26044594652600817, + 0.2699242965745019, + 0.26985249587112425, + -0.5936050482120389, + 1.0709426839156755, + -0.6953501243352503, + 0.05207656050622847, + 0.5850649092256894, + -0.036369747894558734, + 0.0979581134912118, + -0.5914787165137149, + 1.0613752817031865, + 1.217196702695111, + 0.17764140830690234, + 0.3227496710091331, + -0.6212418038837657, + 0.3002116855954717, + -0.004714660577525797, + -0.436931135945212, + -0.026193965163030936, + -0.05103455519550438, + 0.7493751218658823, + 0.33075305854207226, + -0.15040671033766081, + -0.5251863893245409, + -0.1493803996403526, + 1.2198099518398144, + -0.2910816860207498, + 0.18481285743627587, + -1.2600556470458772, + 0.3962958248893762, + 1.2190989913571848, + -1.460870965403021, + 0.004859936991082521, + -0.6251223272976544, + 0.8875830396596803, + 1.661390663565943, + 0.4665368120434624, + -1.001477512211956, + -0.23214509248668042, + -1.0384343092325508, + -0.217826131929122, + -1.1325147721093831, + 0.396787664551125, + -0.47628233878256815, + 0.03823844742116567, + 0.27418254265492203, + -0.6244077070509569, + 0.7737980046455042, + -0.4870647644054452, + -0.5128971042777725, + 0.8234703457101612, + -0.5955575362117251, + -1.5302316564909682, + -0.11047344400740013, + 0.36136644138424373, + -0.0703094325387444, + -0.6156787925488874, + -1.1738369067526713, + 0.7870042470957442, + -0.34348881626944555, + 0.2599287530179741, + 0.4985400821306701, + 0.759525262088678, + -0.6916453164317655, + 1.3545740475199164, + 0.9282789060445633, + -0.08431679451654707, + -0.49906372419251277, + -0.13562188895336283, + 1.8624427857295418, + -0.287648429376786, + 0.7632116663884639, + -0.2723010536820508, + 0.6590415763908393, + -0.09700302785963777, + 1.0236152120238184, + 0.25660390654862075, + 0.6860282326826171, + -0.3301241854654524, + -0.3669046923280785, + 0.4632834900407419, + -0.12180553049192251, + 0.40769414162008355, + 0.31161913770131955, + 0.16504565346766456, + 0.3055465399524757, + 0.3270627441180266, + 0.8825874237104491, + 0.6778622910165533, + 0.4475437072629082, + 0.3846580998133578, + 0.8491049394724459, + -0.21602586144239083, + 0.3473369352325926, + 0.3862087513555755, + -0.9697806096329105, + 1.5360488456034314, + 0.8009336046692054, + -0.14614108797000902, + -0.0012518920743948064, + 0.3092641250810671, + -0.08413467843829205, + -0.8174552696253392, + 0.920688778774063, + 1.4193216363564833, + -0.41009495917622496, + -0.4994319658426051, + 1.3654431409369223, + -0.3546262499462346, + 0.052323834987818826, + 0.17415534409787717, + -1.044479069947962, + 0.17449967964618154, + 0.2085090656892965, + 0.28775702483427384, + 0.39395693715142877, + 0.8490383586037861, + -0.18984606705819615, + 0.38682275698919616, + -0.21640798741010603, + -1.3072306140481444, + -0.06632243034032077, + 0.32448654470204463, + -1.3563577450450084, + -0.6280842213487907, + -1.055249491190314, + -0.40724106223841233, + 0.8388277725778701, + -0.08173671442216447, + 0.9331902192868091, + 0.28803757016540027, + 1.3427496172101623, + -0.1458920303349029, + -0.4727997440306465, + -0.20253854016616665, + 0.38264963407033376, + -0.28957940396262766, + -0.9924795821685687, + 0.18354543994309408, + 1.1541900278155193, + 0.39580418090081515, + -0.4965190039503699, + 0.7844895298136714, + 0.19399760230547075, + -0.39452555749950985, + 0.24616554961981332, + 0.42765516123248576, + -0.7970053348825488, + 0.31357167879034265, + -0.26947601925470277, + -0.7835108611290074, + 0.6256269541331272, + 0.8049806994066158, + 0.042644070447090406, + 0.9306461425655571, + -0.2219959724894706, + -0.7868260111174479, + -0.9303609335454589, + -0.1299330357618133, + 0.1401404004358092, + -0.2532392875114215, + 0.24363540737656042, + -0.6743875605231597, + 0.021389111351775857, + 0.9320361432554604, + 0.5335602014249262, + 0.18959593762075977, + -0.5489375275303403, + -0.9223279492456093, + 0.26320715192123456, + -0.5390016616514921, + -0.5794031430408103, + 0.903971370471599, + 1.1319033664807203, + 0.5713603766442786, + -0.10525782536850462, + -0.03838822752409796, + 1.2155106147092647, + -0.9358030735631692, + 0.5504579125801322, + 0.9907303182732918, + -0.5859810527619884, + -0.30778117225986346, + -0.6339554090327421, + -0.7423385758300518, + 0.047498438759831535, + 0.4709740511106152, + -0.11162932548556193, + 0.43236542072683504, + -1.4146692836788672, + -0.6882561441720205, + 0.7147286854733433, + -0.7900755878794237, + 0.7787357886144147, + -0.9979277326741647, + -0.09341766987843046, + 0.6967031166823611, + -0.10545318457548944, + -0.9290103732771762, + -0.014021882281549134, + 0.10438898116084262, + -0.21978846954352538, + 0.5174343654987535, + -0.18744779704832376, + -0.05491981443849977, + 0.47942559378370786, + 0.15966677787559072, + 1.504960241795981, + -0.06717847783729701, + -0.14735029994558652, + -8.592050991063547E-4, + -0.46910583872054495, + -0.5334680491847373, + 0.833351657392727, + -0.54844939176699, + 0.27419990161271174, + -0.535570099247952, + 0.9371819707370476, + 0.300345338405172, + -0.013945400104664106, + 0.09805282125366191, + -0.19074786413825348, + 1.5591094003185426, + -0.4349760536582881, + -1.5020441376450981, + -0.2548434155609863, + -0.5923783941180437, + 0.4449301572956163, + 0.8360318953560567, + 0.535443445476245, + 0.5992665430066437, + 0.3761372914424572, + 0.5709492891397149, + 0.04805860325676255, + 0.4597014984718585, + 0.42346789813675173, + 0.13564631996481546, + 0.21234261828235457, + -0.3264580375333933, + -1.3374498644909316, + 0.9848718947784196, + 0.08672225183811162, + 0.43853207230141905, + -0.5081933620989919, + 1.5874607475115283, + -0.23003161700301775, + -0.9310744799259711, + -0.30220337195095187, + -1.1430172204991367, + -0.4806563635571805, + 0.7957512642068253, + -0.42408982347615526, + -0.6173358111175618, + -1.6316159895569649, + -0.3351450875495962, + -1.3371720373187752, + -0.5779695084964919, + 0.6368552767958974, + -0.8144079940761166, + -0.6314752984812451, + -0.8143635693398926, + -0.8093983458273426, + -0.7885267696694095, + -0.08792137780069267, + -0.1838566959822968, + 0.27101388722195635, + 0.043236120892652045, + 0.018625508151299423, + 0.09930357163652588, + -0.3971230130085303, + -0.6093247305344645, + 1.4538449926530947, + -0.08572151205360955, + -0.8680794758004611, + 0.45410220965733117, + -0.3660257153077043, + 0.6044120273426218, + 0.7605402293063958, + 0.1497194154195918, + 0.47653008788133155, + -1.2263410252769535, + 0.1334496743614034, + 0.30171960890086247, + 0.35044992243647183, + 0.04791509222174255, + -0.61873825623117, + -0.8424123756983802, + 0.03187216760901489, + -0.5720782734832316, + -1.0958225586264785, + 1.0444769604840127, + -0.21079992797339442, + -1.076054734699396, + -1.286153608097536, + -0.6012901865865503, + 0.8010690055453399, + 0.31167790772181575, + 0.3953634774837432, + 0.7454536874263603, + -0.6256539532680332, + 0.8566835713126624, + -0.13051837888825987, + 0.9734264009417783, + -0.3488268897361498, + -0.7900191312670661, + -1.0603654335034483, + 0.3676132390745096, + 1.2971186361368046, + 0.12382712006381177, + -1.3408535272798439, + 0.8254293574560895, + -0.4400162272994744, + 0.7334318588051499, + 0.48970693925843684, + -1.1639837236380717, + -0.3763302211919709, + 1.609580804919517, + 0.6128173378208199, + 1.326948517171316, + 0.4078497892820217, + 0.28254911237792946, + -0.6821077474908077, + -0.28314392651475806, + -0.8420054005342306, + -0.4255974072603386, + -0.3586357818260362, + 0.1693381034554977, + -0.5539051548305344, + 0.9356546312952191, + 1.2269593374273298, + 0.7006854123120415, + -0.43949761041417224, + 0.07312855319636023, + -0.3860226929361916, + 0.6591494528440243, + 0.9175082166245292, + -0.14661080233663962, + -0.3816558412981062, + 1.3270052004579462, + 0.6275225410570822, + -0.6180703049002081, + -0.516015628573777, + 0.7354005006002845, + -0.08280745210536332, + -0.44198651559202295, + -0.2332308000470488, + -1.6340414485314463, + 0.06850494534370485, + 0.6390596472296025, + -1.2911390290537006, + -0.1493650015317618, + -0.9317716567593725, + -0.09975988158440882, + -0.2024438348377012, + 0.374302094838607, + -0.29360526651904617, + 0.8435046768658976, + 0.6579141571479452, + 0.13744804315362127, + 0.17295103656718822, + -0.640704105985566, + 0.4203830428700868, + -0.4736989928158018, + 0.5356212544426889, + -0.2481323217339209, + -0.5713229398463443, + 0.5037143250026713, + -0.9270313063157536, + -0.02920070173434151, + 1.9356233607883386, + -1.3456165810695269, + -0.9526783098241446, + -0.2682744190059359, + 0.07957767458131469, + -0.10012006147590753, + 0.7537785313484425, + -1.1323259915579191, + -0.07502997081476674, + -0.7157912758643565, + -0.2125734585287043, + -0.5614535539158498, + 1.0693515940069385, + 0.10491542016415821, + -0.5149470154856823, + -1.4798204607723386, + -0.04524365095665629, + -0.8259389194860004, + -0.4704485528631882, + 0.09030816358247196, + 0.5231537636400357, + 0.12271673128441482, + -0.8341146848611243, + 0.874586072171896, + -0.5493245493723378, + -0.24865184825192008, + -0.4488244109512523, + -1.431784863231459, + 0.42058419170135675, + 0.9452618023252193, + -0.12024888597478889, + -0.006289632395331128, + 0.14336000079565242, + -1.5333359841822083, + 0.6161589668729462, + -0.5480292956243288, + -0.021095614044636456, + -0.1436213414697192, + -0.3951134972668525, + -0.24727580093674287, + 1.065985350630018, + 0.6436485475785801, + 1.0406676144772609, + -0.42642677044472826, + 0.5115929900507022, + -0.06453320333742901, + -0.03461963114189568, + -1.19166289488359, + -0.41447969873312374, + 0.5680104422559893, + -0.1024881957505319, + -0.4467517017403401, + -0.010646936791590868, + -0.1632045792971032, + 0.3953590000937256, + 0.1729897748649675, + -0.46071838082870575, + 0.1541232145909116, + 0.5719505441220569, + -0.14634278700288444, + 0.19349193789244412, + 0.17643346528973178, + 1.0560425621583662, + -0.7572753237077463, + -0.386141765888099, + -0.061507020932257135, + 0.2720627367504788, + -0.8554587037618884, + -0.380452484438598, + -0.38312109929360477, + -0.2074748521947271, + -0.6919222066053603, + 0.5104504653222527, + -0.7552417748918074, + -0.209079285420422, + 0.3272977035373589, + 0.7493282014810917, + -0.47610239165902823, + 0.009935172734327341, + 0.5090821342999318, + 0.8441887800163536, + -0.5096198583679935, + -0.19987612130052393, + -0.14993106595134945, + -0.6304858986687378, + -1.0137766246119542, + -0.9417277605874586, + 1.0330126999397053, + 1.4764888694083265, + 0.5973000042810607, + -1.9504011113652482, + 1.3921597775231316, + 0.03770414877591626, + 0.8097915763130241, + 0.16868907680585418, + 0.7547293084061998, + -1.343211954724584, + 0.32144513874233127, + 0.2716168612507648, + 0.04979575542706082, + 0.3883513259284689, + 0.5422306025725053, + 0.0363914928053299, + -0.45507707921777857, + 0.6716982726431565, + -0.030674638056656378, + -1.5917379190611962, + -0.23892026583946585, + -0.0034759010929095928, + 0.2717353137819641, + -0.38790612479586045, + 0.5416978090021739, + 0.13964205570346047, + -0.8890706210484112, + 0.8379129084262522, + 0.7663673432846151, + 0.710602720368639, + 0.7561831383424672, + 0.24957471998720637, + -1.322348959928295, + -1.6345041214518945, + 0.2750700619661269, + -0.9637607477366301, + 0.7661093471669069, + -0.08888867660695889, + -1.1304924316503464, + -1.011395601372739, + -0.1705204862718616, + -1.2693569848279362, + -1.168256106156731, + 0.3194720438399732, + -0.064515110847756, + 0.6276720632865199, + -0.0037733153594706925, + -0.4467301878919421, + 1.082456236489502, + -0.020663365713479452, + 0.22762722000454827, + -0.7895998815148713, + -0.21198464945921267, + 0.39729476947102016, + 0.3438790939387323, + -0.2745575981308853, + -0.37855893818098046, + 1.8733171769121673, + -0.10654509030137062, + 0.5393747246514589, + -0.02820990447688615, + -0.23998438842390302, + 0.08808489714126524, + -0.2519928549273172, + 0.9235875186775968, + 0.6207242232221853, + -0.09887784352020701, + 0.2793765419878019, + -0.8206260026964326, + -0.04658395906939055, + 1.0489080148039875, + -0.6958713583563219, + -0.6504239840214354, + -0.5995592785876673, + 1.32391827430909, + -0.95191988218847, + -0.5162314677494354, + 0.3029474326896874, + -0.8146588766177011, + 0.3325674881166, + -0.17810736839230656, + 0.2667104067837368, + 0.4893850196771999, + 1.6366267439364268, + -0.560385097464848, + 1.2268934389884965, + 0.20143969340721854, + -0.8713659577195791, + -1.3935836270514357, + -0.5160587529114332, + -0.8998788804571584, + -1.612388518223931, + 0.3680486642548128, + 0.6406635374354267, + -1.1779053971879878, + 0.26513732314836214, + -0.008855620533102807, + 0.512362452073789, + 0.5216790598838382, + -0.7199907854422639, + 0.14488380566362694, + -0.9576973513128366, + -0.8411710830942507, + 0.6862007646071876, + 0.07666964196231241, + 0.8689087568643366, + -0.2973738677308538, + 0.9307060017078751, + -0.9332676224319146, + 0.4642970615575049, + 0.07032443401296798, + -0.5967094285635435, + 0.7081218265682027, + 0.14314771861489758, + -1.0503418007706515, + -0.37693976949200414, + -0.0024954305126532457, + -0.3060885246304231, + 0.1813418369799876, + 0.20858774763371685, + -0.17160186116930384, + -0.18694323352006406, + -0.033295761112460326, + -0.22075091280658107, + -1.2198873589445598, + -0.34102274893346035, + -0.5237048774323648, + 0.32284001570906923, + 0.6415897100937111, + -0.22512737344141967, + -0.1720736856113653, + 0.8799087000696779, + 0.8364410574337828, + 1.0949917181132627, + 0.10233233068231802, + 0.06102657790314092, + 0.8972039501552173, + -0.248245439834066, + 0.5916216031418728, + -1.9397829959846278, + 0.5402761839250746, + 0.5723504671540991, + 0.6344661782324666, + -0.32887906873738215, + -0.26035368166450595, + 0.705255056079645, + 0.2986561835740931, + 0.3298994090398405, + 0.9543212450383173, + 0.8682357469388963, + -0.14997427589621945, + -1.0508274001430755, + 1.6696416775530845, + -0.3000046109421723, + 0.680940547301437, + -0.6601879593814853, + -0.05273042319419791, + 0.012384568953981087, + -0.34195083080766026, + -0.06614017456801022, + -0.9974820559201162, + -1.1010206535226374, + -0.2567285570007266, + -0.7848697767565365, + -0.06622154341351662, + 1.282262757719793, + 0.6084088807863121, + 0.6564562999732817, + 0.6320668585729544, + 0.7075472654960896, + 0.38684419279435645, + -1.0964711164684298, + 0.2138724066987224, + -0.30733161640830564, + 0.6282114977620631, + 1.150147803750084, + 0.33166314302581884, + -0.75398783393547, + -1.2448938601582547, + 0.513246629293432, + -0.5436798242558291, + -0.08315352908423887, + 0.5481671187486806, + 0.7652949524645454, + 0.5346573293764313, + -0.9436845841823027, + -0.4640789642459167, + 1.693266122137922, + 0.7970846401770099, + 0.45539351597073224, + 0.967735170317499, + 1.3404073454664702, + 0.7075537045152527, + 0.6373038868051281, + -0.2132427438994596, + -0.06063777061869633, + -0.4492957095237347, + 0.024012799812637278, + -0.23553312834809284, + -1.0555370775625055, + -0.2870223133838145, + 1.2612518927068803, + 1.0912374192050163, + -0.3679964920157413, + 0.5693072817655015, + -0.9434216593894047, + 0.4126009498651139, + -0.7503647616334947, + -0.007051162086710841, + -0.18236421638893527, + 0.4532797882757981, + 0.8475142543363414, + -0.693222342201902, + -0.5731882916664218, + -0.306999643049551, + 1.0777048111466032, + 0.5973235393127204, + -0.13541523615413534, + 0.40246807400321455, + -0.38503102790435445, + 0.008030706967847894, + -0.6209001701058989, + 0.23278677572773085, + -1.1148999392735943, + -0.5672426516228352, + -0.41184641957343826, + 1.0868519705488449, + 0.6855210727874971, + -1.509084613443635, + 0.6235117377303321, + 0.6390012903572152, + -0.7218997021404321, + 0.7755167932073186, + 0.08235060704048569, + 0.7033229488230561, + -0.3397109595312596, + 0.4627724954109217, + -0.3683541115736553, + 0.06187119328605062, + 1.707016897277966, + 0.4127956643469596, + -1.346699569190101, + -1.0861824271391192, + 0.31491752212170043, + -0.37159898632692073, + -1.3587476695804712, + 1.009322213460487, + -1.2430147735942119, + -0.37192749793867474, + 0.6775642429062013, + 0.8564620457415463, + -0.46087668940903354, + -0.07268189657091448, + 0.25222408109126604, + -0.8470726367090862, + 0.4846930978022908, + 0.5824212104371621, + -1.7348494294551333, + -0.3682104782832152, + -0.48008885204401064, + -0.39491069767424253, + -0.7831207263080361, + -0.4880675161565158, + 0.43541091553034666, + -0.25498341121430407, + 0.7754247907662174, + -0.9342939083855994, + -0.8767042837225336, + 0.6253826916126856, + -1.277185490618983, + 0.4296277850624826, + 0.1703619581378831, + -1.3656273395295293, + 0.4572056781404194, + 0.6960956975342347, + -0.2095854829628149, + 0.63834873208355, + 0.3350276858929503, + 1.5042481552943634, + -0.09802455545505322, + 0.7622247857966905, + -0.43910509632246314, + 0.5840750348461431, + -0.32010751537374343, + -1.3734205331974976, + -0.9765890740951377, + 0.192981891357532, + 0.010022888139172605, + -0.028626446155770962, + -0.41928913890700736, + -0.4825643701004103, + 0.9056258149755855, + 0.15005695137761385, + 1.0861039254763354, + 0.27129248082837754, + 0.5699663838500552, + -0.13790175351753578, + -1.0070078092571761, + -0.5967746485646906, + -0.390518929570296, + 0.6273334741411901, + -0.17987078306118898, + -0.38266751924341935, + 0.17264700654026427, + -0.8249217162401131, + -1.1171026333487726, + 0.9546179827480552, + -0.4660456617786517, + -0.686979499513217, + 0.008031532846532265, + 0.572759374154629, + 1.3022116831770394, + 0.43153399302324946, + 0.19882442927845345, + -0.3810940688744658, + -0.4065193816152885, + 0.756200178911078, + 1.0432441266540398, + -0.6700902065902926, + -0.2769544786308999, + -0.31309548490418326, + -0.45864609406530166, + -0.21016549331602893, + -1.21243911235184, + -0.32617784246850945, + -0.6064381617053508, + -0.6705030060972672, + -1.5235545331645495, + -0.6249354569379139, + -0.6998536739858658, + -0.29938771489318455, + -0.4023183349399575, + -0.5797722438548585, + -1.049064700356333, + -1.044524430133194, + -0.21794681827992549, + -0.31563011311580397, + -0.9391905695828632, + -0.39090294427966293, + -0.5691308483358178, + -0.5923172497700606, + -0.5762803541030674, + -1.6089342815245433, + -0.9374894197955653, + -0.8048753759097457, + -0.553928257304195, + -0.9350593966731507, + -0.8478698961641636, + -0.3135893133975273, + -0.3665663264609073, + -0.7212047377102166, + -0.650110961789234, + -0.38134156050348544, + -0.8028754733644436, + -0.958431013130539, + -0.5659650972923278, + -0.26303376121386385, + -1.0746565819139824, + -0.3700900207623646, + -0.9235500492365422, + -1.1147113071774875, + -0.24332372571221733, + -0.2563757968131056, + -0.21983369481442097, + -1.3566205027018041, + -0.8016628527476285, + -0.6489573983230515, + -1.041630843390639, + -1.0176957556891268, + -1.1090487151570274, + -0.23016246135393437, + -1.0273043081088762, + -1.3229609747179338, + -1.0942932672833954, + -1.403897455156342, + -0.37164201941486946, + -0.6267050423185159, + -0.8319487214099826, + -0.21165892582363488, + -1.2892188249273902, + -0.540293857474258, + -0.46074447782573485, + -0.20042839130370432, + -0.5698874867509242, + -0.6486516073967856, + -0.4797689913107062, + -0.8887897991881624, + -1.0434426550038163, + -0.46674787089635456, + -0.21801145013388168, + -1.0386163628040275, + -0.5552090532879129, + -1.689988089850173, + -0.48120237598078935, + -0.9669117419848205, + -0.34033060745687255, + -0.37864259599566746, + -0.40814285842246056, + -1.2803508877352612, + -0.2627248514730833, + -1.810829978775253, + -0.2560662173038422, + -1.010497881289468, + -0.9440341245610251, + -0.710015205448779, + -0.4790472666281038, + -0.20397996570100319, + -0.88578552217175, + -0.27594916944082715, + -0.6085163558193714, + -0.3435085150034526, + -0.44297417632523306, + -0.665828137782273, + -1.6372023074957889, + -0.37012677833191454, + -0.5461722370145821, + -0.2847558473810911, + -0.8555804905971572, + -0.5245163838040157, + -0.9323824415018227, + -0.281871992131144, + -0.3937168267179932, + -0.3471071017715048, + -0.45993562660346976, + -0.6545243260205158, + -0.517653133326549, + -0.7744558789954079, + -0.9063067964840115, + -1.2159370702633934, + -0.5062259803399821, + -0.5670215557756756, + -0.3290262835089621, + -0.4840325820597405, + -0.536130048498714, + -0.2038168243712482, + -0.36158832456812023, + -0.7152477848138624, + -0.3292007218496813, + -1.1207144808243001, + -1.0050656154293127, + -0.2083461741788719, + -1.25649223597924, + -0.4672593394784978, + -0.8964571759779854, + -0.6164606034110302, + -1.1893340734195177, + -1.0857579867949145, + -0.3315583733353988, + -0.2601271810466358, + -0.7388417400573113, + -0.24795082010107647, + -0.9011198197810343, + -0.7421287841984938, + -1.090224653750375, + -0.38728122805832693, + -0.5194183472099788, + -0.49598628092571334, + -0.51940191736098, + -0.7331189851006638, + -1.7071041684779718, + -1.0164889597544666, + -0.22708174190049038, + -1.4576646585443436, + -0.634732219969472, + -0.6910896325796797, + -0.9816934970504132, + -0.42696947416331926, + -0.6651273448186423, + -0.6914393064794533, + -1.2827316419632104, + -1.022811487756619, + -0.244845562924568, + -1.9209608367004143, + -0.3485953048402353, + -0.349623020597202, + -1.438756798499032, + -1.1341049296558654, + -0.30379977457127916, + -1.0155498415149298, + -1.837070145099175, + -0.5780040294495481, + -0.6660521829876345, + -1.874015204581276, + -0.6150494084421985, + -0.7249154597747995, + -1.1296896720954985, + -0.374148522830097, + -0.4763801432297795, + -0.6899328504125798, + -0.5375582345351355, + -0.5117167114649146, + -0.9626174764522315, + -0.49008439698556105, + -1.1178651724796456, + -1.6529817734135002, + -0.27981375974147127, + -0.20633696180610006, + -0.4119105759781471, + -0.8987789405109835, + -0.4824157399945097, + -0.4131170759291495, + -0.9028878400151085, + -0.33967918900750504, + -0.4565547089509539, + -0.28336393026608797, + -1.1645123396188233, + -0.30002568438263266, + -0.8283064525918642, + -0.32599255259795074, + -0.7625638835211482, + -0.4762696809840598, + -1.1293381610534272, + -0.7188878026090431, + -0.37224460289256484, + -0.25058746877295895, + -0.7763610500595394, + -1.6017290287771055, + -1.615398857421461, + -0.26964628046907757, + -0.9994722928497207, + -0.6784372775220285, + -0.5793774355055378, + -0.6417459652183312, + -1.2175311538465698, + -0.5678544951690117, + -0.8306219888222741, + -0.5693302836634007, + -0.5430455954009722, + -1.9064710856987268, + -0.6203341034558392, + -0.29547355456750835, + -0.215806709839707, + -0.317687005221851, + -0.3114263245498073, + -0.32898817213414866, + -0.8796398354648841, + -1.2700325947815279, + -0.6012621651366951, + -1.4720772848326094, + -1.222454236559198, + -1.6587767123384691, + -0.8335771508007195, + -0.37351144198755876, + -0.6931682225243582, + -0.5451260209697404, + -0.32457732556287106, + -1.052081024713513, + -1.082677852681755, + -0.5368932654051456, + -0.9778163209708134, + -0.38844092306268424, + -0.37235112251297436, + -0.7549192933164027, + -0.8890717733861596, + -0.3807034290402191, + -0.23244865018064514, + -1.1724351078793238, + -0.8747512043469098, + -0.42993290229194786, + -0.7378191147388838, + -1.1404609305311866, + -0.2896469655659367, + -1.2253127419850975, + -0.2123522946891248, + -0.2712139926998795, + -1.873870105547068, + -0.36061822501273894, + -0.6570527162275247, + -0.2159356975692715, + -0.937266984897451, + -0.7197097807850887, + -0.33413928995186915, + -0.3181376733001459, + -0.5950575848323421, + -0.5871912863856996, + -0.9897586743465859, + -0.6554949794271314, + -0.5656475194279046, + -0.365515879473213, + -0.6706722979742727, + -0.5209804203715434, + -1.3138400542445108, + -0.7837974870961965, + -0.5960066600218389, + -0.8956542415756501, + -0.3332354324728286, + -1.3867470999828955, + -0.746742535553127, + -0.650251319842868, + -0.445000268631785, + -0.7005403027520186, + -0.38324540348562997, + -0.3854304119898965, + -0.21709426622420092, + -0.43130768282713006, + -0.8244008618417824, + -1.2012358401225989, + -0.3231830557550737, + -0.4645923818375927, + -0.4218250112859031, + -0.3753430783375144, + -0.6433096341757331, + -1.7370919163416692, + -0.5299813856044773, + -0.851291234831129, + -0.43340910299492785, + -0.5628092208413957, + -0.6629400898813721, + -0.8598767417935104, + -0.6714117274667127, + -1.0312869173298578, + -0.37931329205261216, + -0.7439465060291085, + -0.9249260545043659, + -0.9495369351219503, + -0.5693241244430776, + -0.2201899517619367, + -1.1690920645560394, + -1.1430107822578992, + -0.8004688660327093, + -0.8957269947341436, + -0.8112947050306729, + -0.301999014979277, + -0.932094944406248, + -0.6981414144988081, + -1.2564480394164952, + -0.8630941675843744, + -0.43782055864981906, + -0.5879512097107121, + -0.2458442095486133, + -0.38524855824716425, + -1.8202020920840523, + -0.46500060827132816, + -0.9331397166195625, + -1.114006283534009, + -1.2158652191893202, + -0.6818972734998402, + -0.9791606045113055, + -0.4754488150462338, + -0.3524375257042418, + -0.2092251732405906, + -0.43828380870589245, + -1.3217731270596873, + -0.2930324731797192, + -0.6182349603183691, + -1.0845971698355168, + -0.5171861517565712, + -0.6163764227999722, + -0.9021565153082152, + -0.21523812816572133, + -0.7626489845197216, + -0.6067576403142491, + -0.21934374226916134, + -1.233953843219272, + -0.38113483560717765, + -0.21573566144301118, + -0.822976316159534, + -1.4071246107759938, + -0.9796764825995902, + -0.38732291070190433, + -0.4428888644176962, + -0.5870254665860493, + -0.9623665583854876, + -1.0949295776081294, + -0.4448839534911389, + -1.0318907290031882, + -0.745453928092605, + -0.5698291542981625, + -0.4358637283294949, + -0.38471535283491154, + -0.46102519850751306, + -0.27076408652673367, + -1.0402559031675411, + -0.8961798633172818, + -0.7113830218010951, + -1.0248964494253812, + -0.5534151671494509, + -1.3544905716140823, + -0.5655100095650718, + -1.014250743403296, + -0.3848224395582883, + -1.0300169980679734, + -0.2544820279657471, + -0.9022782843667297, + -0.7137941869121261, + -0.5834880033179879, + -0.24954765831413164, + -0.8851718746588414, + -0.3790537043018313, + -0.3930670904296514, + -0.28468056207690395, + -0.43671632395843857, + -0.7726501589098768, + -0.33969892788681677, + -0.6201223986434433, + -0.5413845170402038, + -0.8287192169307782, + -0.6840992609430893, + -0.2988192513886851, + -0.8979217032490256, + -0.992520466904213, + -0.45831958766082914, + -0.5204435488763746, + -0.4657195895764084, + -0.6915279302028525, + -0.2702918153279385, + -0.8741901219475343, + -0.23368859185782298, + -0.9446487738513568, + -0.6202678327801879, + -0.42947566920909125, + -0.6732352153189156, + -0.4879939955596451, + -0.5438282694426625, + -0.6502838291453714, + -0.8675569170327793, + -0.24361268934763655, + -1.0444282826645064, + -0.4419039196175476, + -0.4407271199051713, + -1.6012265094843834, + -0.6820557708435395, + -0.4052177075715849, + -0.6366607310637449, + -0.23771761351124374, + -0.41643263462373387, + -0.9561951379749694, + -0.7663147032004962, + -1.0431649657352595, + -1.3479413791130634, + -0.7907304591780814, + -0.5307430104107678, + -1.163968374737862, + -1.484049177723838, + -0.4500632473026825, + -1.3113985670537769, + -1.0113159178396234, + -0.6681092371509354, + -0.3558203580892433, + -1.2802916522468104, + -0.9102856905335889, + -0.30122401721325315, + -0.33329785297573, + -0.558109604020826, + -0.40985331210760234, + -0.46794968383241076, + -0.35915592751157943, + -0.9758244279811656, + -0.3105044888380374, + -0.8111092579057751, + -1.3652190998021585, + -0.8469947394497068, + -0.5551974112945685, + -1.2143906804970575, + -0.7203217968175905, + -0.28294096300034755, + -0.5888395253703702, + -0.5694643858258162, + -0.9534093184190789, + -0.713403175294715, + -0.9528970055984789, + -0.5342492593474878, + -0.35352788558041626, + -0.2719431078225173, + -1.1628519521087262, + -0.3848467343598421, + -0.7832027150343007, + -0.7244062231258335, + -0.7453578951392736, + -0.3709341540748588, + -0.49475091150648365, + 0.3577196337322672, + 0.38120152170487875, + 1.315387055786036, + 0.5953357555284627, + 0.25266074604351146, + 1.3852288134206934, + 0.6991267935924268, + 0.6468797718291398, + 1.980244591974188, + 0.2729866403886864, + 1.4523811501283959, + 0.7479003290357062, + 0.7916719442738713, + 0.32756788679220344, + 0.949492763683675, + 0.45651720706633653, + 1.026402069617886, + 0.7517544809329819, + 1.0928342592260316, + 0.29319195881965365, + 0.8928506923221574, + 0.8383094138808699, + 0.3946505680595029, + 0.33610643265683593, + 1.8810288334439051, + 1.2427288023918635, + 0.5449634683963884, + 0.5156079975915611, + 0.9433381518453102, + 1.099653282982061, + 0.6851906670382896, + 0.3151807072992044, + 0.41727255816454273, + 0.7241688429318504, + 0.24743456484205273, + 1.215472468638887, + 0.23310742491797648, + 0.33841686763415685, + 0.9746887592974112, + 0.27267411212996584, + 1.234599488724196, + 0.8914354343871522, + 0.22840601718040937, + 0.3338847629445979, + 0.3595773382937585, + 0.9705298425723349, + 0.40839936369462904, + 0.9378252727003911, + 0.2921721264679654, + 0.8743136171262818, + 0.5623369081799418, + 1.0412971901427597, + 0.5903870689802504, + 1.1040623104163163, + 0.37763435649736793, + 1.2746268534699852, + 0.8471582607294912, + 0.685972468721095, + 1.2182703151660814, + 1.1511799109314662, + 0.30277481528459427, + 0.7698294371471126, + 0.9673079275255166, + 0.29303309084238055, + 0.5792131725512778, + 0.7340473663190551, + 0.27444261414800675, + 0.34627748133747155, + 1.03514919498675, + 0.9266449416643926, + 0.7509990077997564, + 0.5608338328733573, + 0.36307118091577256, + 0.3362413571971963, + 1.7041054699837481, + 1.8797683472548667, + 0.66936675072242, + 0.25744809585514666, + 0.2883434827008925, + 0.7824477403339829, + 0.537513159252127, + 0.5487255395747406, + 0.5960954269753629, + 0.4421293827763971, + 0.936971276797393, + 0.35327681779017855, + 1.4649065961762402, + 0.7726042153132815, + 1.0930587783885501, + 1.053027269277877, + 0.26018840111199004, + 0.7903196304926129, + 1.6198541252188934, + 0.9822982240989394, + 0.32309623106764473, + 0.5705426716708308, + 0.688251842410987, + 0.47291761710490154, + 0.5131010875562078, + 0.8823633039296211, + 1.220985428996956, + 0.5833487995276065, + 1.1661257516769223, + 1.5127233673845273, + 0.3635530307964068, + 0.24923367382706216, + 0.26885811970881335, + 0.5741596517178412, + 0.43065236000542334, + 0.38389337849973226, + 0.5253431387231579, + 0.28111347408055265, + 0.8255618666892993, + 1.1390679366518868, + 0.4225848549356125, + 0.8461949437452831, + 0.8692202714557967, + 0.3966265262784202, + 0.45268522022075564, + 0.23902841443231676, + 0.374991261517544, + 0.25986163781144656, + 1.759535832173596, + 0.4827361428170929, + 1.606605940355794, + 0.7118294218004526, + 0.6115820781916033, + 0.9004661171993174, + 0.6670876124201572, + 0.5006568620698242, + 0.6004641733167774, + 0.3164447178392463, + 0.20223447811576445, + 0.7132482308984212, + 0.47288492360569206, + 0.5314598620790489, + 0.2331538747759109, + 1.4008507797516327, + 0.5442643078477563, + 0.644827534223932, + 1.031751496105358, + 0.4914511058486843, + 0.4990474281595659, + 0.9222494916344185, + 0.4074405933532646, + 0.42896864835007004, + 0.3247265156640924, + 1.0468945681380808, + 0.26470721661230634, + 1.603634864854594, + 0.24793516318995965, + 0.5199109075571043, + 0.586516436480905, + 1.2444541961453244, + 0.35250305506538854, + 0.271792654529859, + 0.7297455036212404, + 0.40128592542601615, + 0.5669865330104998, + 1.3746845928751643, + 0.32118246944077483, + 0.41253689304090396, + 0.5125855359382898, + 0.505088883611897, + 1.2136725049907318, + 0.32608250619123896, + 0.8720666728055683, + 0.5471772626688537, + 0.3435093867889516, + 0.6106459281492058, + 0.4886673474864161, + 0.5132792648972277, + 1.040907015761561, + 0.5752174039971493, + 1.1512781934777667, + 0.5165770973873638, + 0.20407828850520665, + 1.738809508600163, + 0.444025284600735, + 0.3657200917119612, + 0.8983986389754175, + 0.2944231301984469, + 0.5463513345906967, + 0.44453165184797444, + 0.21504916115601722, + 0.6613498956064958, + 0.6091857215859728, + 0.5755308667214186, + 0.780879965451381, + 0.5290236285838725, + 0.26750961741440366, + 0.8967488173818653, + 0.5754923766051254, + 0.5889925695137452, + 1.451903872608981, + 0.6327737537680732, + 0.39553593307983564, + 1.3155157731497598, + 0.5147536934689084, + 0.297565656980294, + 0.514080375710645, + 0.2983454831524536, + 1.082340314758559, + 0.7204704211314488, + 1.2192173246235365, + 0.33577090599280957, + 0.36870425412388724, + 1.266043357112656, + 0.3962122828023712, + 0.7824914285146274, + 0.928553108017466, + 0.7893322313585396, + 0.25864794688037146, + 1.2531232146560285, + 0.5490398233670406, + 1.1787584305274768, + 1.5435423624328741, + 0.43804310565712357, + 0.3200723465162274, + 0.8722512676931378, + 0.7488638692769157, + 0.29540605549521415, + 0.6231872563049703, + 0.8011190075443969, + 0.935763188910961, + 1.0611800335200954, + 1.8146796572974848, + 1.6356240266381514, + 0.8120776478592207, + 0.6605816529918048, + 0.3405196467838138, + 0.5130214933146788, + 0.637951715265005, + 0.2552184031515808, + 0.6161896356775357, + 0.3943074569986639, + 0.6524005038499895, + 1.0878004723210732, + 0.24820689579024485, + 0.380663540614841, + 1.0516167998199968, + 0.8422017562717697, + 1.6759350989915942, + 0.9299972840564763, + 0.6000562900011159, + 1.060019117066314, + 0.4897547089287059, + 0.7253546547478418, + 0.9956034171909399, + 0.42360295300140627, + 0.3000982150210423, + 0.7350911135921385, + 0.3073167013887763, + 1.649807290734707, + 1.5691343210752684, + 0.2718471193104512, + 0.7064058921765657, + 0.6144022425411559, + 0.6331359040312781, + 1.4092405306217057, + 0.6207268606261035, + 1.6693700372000753, + 0.25600648711234747, + 0.3519435120352017, + 1.1191473552310371, + 0.3774231208997555, + 0.47450758416703437, + 0.7959832054176398, + 1.2621648998355934, + 0.8829230479584954, + 0.23926876983838713, + 0.2014164766908565, + 0.64372202083422, + 0.7846210024920616, + 1.0986492276489084, + 0.8816037633956453, + 0.6821505014940485, + 1.0638769356562396, + 0.5382447834276641, + 0.485329538888813, + 0.9999288871473523, + 0.5471012780478752, + 0.6893033680269068, + 0.5842437570544678, + 0.7925440221315615, + 0.43319244430834064, + 0.7081168857642806, + 0.8449330277433325, + 0.8284446671194172, + 0.8784708437483, + 0.3532757071009893, + 0.3762208885195589, + 0.4794068228247771, + 0.7138490371854103, + 0.26531529694976186, + 0.35237168098810595, + 0.7377480046896951, + 0.6904150002775532, + 0.3294110573316787, + 0.23528332483366593, + 0.37939865252913635, + 0.542552959783536, + 0.7625866079989139, + 0.6208964755523958, + 0.92718293787701, + 0.4867500871726693, + 0.23271829789506374, + 1.2186061428197021, + 0.7727547382654337, + 0.9764308109282427, + 1.0808045865100646, + 0.6914127161937882, + 0.33663330451288337, + 0.9699119039263234, + 0.4028153706220258, + 0.2645753721122372, + 0.4768888485123658, + 1.4606014917942316, + 0.2975940098496993, + 0.2399539208497752, + 0.21353724114500414, + 0.27674303725213756, + 0.5131460225923531, + 0.3346750855304431, + 0.7138160192814548, + 0.8958545948070616, + 0.5228190161651498, + 0.7937743967596307, + 0.6430811109243194, + 0.6044878710388882, + 0.44480531385982464, + 0.22778498412697867, + 0.6711018579482526, + 0.3291987072778412, + 0.9373972791288807, + 0.20491195223504882, + 0.30944286565011275, + 0.7382449895402436, + 0.22428309477432262, + 0.5363156368015785, + 0.6535587951637901, + 1.4578485356392985, + 0.970000051725854, + 0.7436229532344398, + 1.0690326725745862, + 0.5801698637900816, + 0.5679630247571943, + 1.4629356655117443, + 0.4643407696770656, + 0.6529519518857706, + 0.5790746911995054, + 1.2244036105941307, + 1.538779433064309, + 0.5842595340481814, + 0.3364269767030913, + 0.6379984765411385, + 0.4359223830522402, + 0.7845685886523617, + 0.24237976380786844, + 0.49093953854035965, + 0.4744652226242779, + 1.158888701325575, + 0.23635050775107752, + 0.25992236997006307, + 0.6609907703513921, + 1.0810868109947176, + 0.764223258272673, + 1.2645195537371596, + 0.6413468077829441, + 0.897477188163828, + 0.24514598299729418, + 0.22452128437702193, + 1.3125056399239596, + 0.9836116917849962, + 0.583493961303654, + 1.0061981962352358, + 0.24940252025016665, + 0.8820726044896027, + 0.22968130912196186, + 0.8024035507952957, + 0.6369570292696975, + 1.012832741790917, + 0.7208655331483226, + 0.2875118484885044, + 0.7297991408733793, + 1.0736052473582227, + 0.2133339781187614, + 1.3528324299573153, + 0.2380617078911099, + 0.5184637886957627, + 0.8511794460643791, + 0.8516056034623126, + 0.586642396773589, + 1.2077239623465779, + 0.8067065485209096, + 0.6777521586021386, + 0.3022646644950962, + 1.4061804420665978, + 0.26016154824740495, + 0.40247528766552615, + 0.44659092290371244, + 0.40552738319478826, + 0.20946798416424398, + 0.8141303870442301, + 1.1178762604789265, + 0.3851499932133968, + 0.30556836337713555, + 0.6048858489135097, + 0.23236499725926996, + 0.5235608187512436, + 0.6893122195764066, + 1.1850991454218256, + 0.8368096077122636, + 0.3220611490326809, + 0.85101345032577, + 0.23531967259191575, + 0.6779113601779558, + 0.2272177555586885, + 0.20903006685523717, + 0.9020578518351583, + 1.0763529658785957, + 1.4725592977793247, + 0.8770946494362918, + 0.6149617683301464, + 0.778935648590221, + 1.9307329906822641, + 0.5625970585477897, + 0.6173526866951027, + 0.2558835775203929, + 0.45152534759254825, + 0.3326881761914924, + 0.7960471088964823, + 0.8156254332997396, + 0.4352505925001337, + 0.3418808292969631, + 1.928456026558719, + 1.3241718259969164, + 0.6801067068315311, + 0.34398984581997655, + 1.5659369088519786, + 0.931365517140982 + ], + "type": "scatter" + }, + { + "mode": "markers", + "name": "Expectation", + "x": [ + 0.0 + ], + "y": [ + 0.0 + ], + "type": "scatter" + }, + { + "fill": "toself", + "mode": "lines", + "name": "Mode", + "x": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "y": [ + -0.2, + -0.2, + -0.2, + -0.2, + -0.2 + ], + "type": "scatter" + }, + { + "fill": "toself", + "mode": "lines", + "name": "Mode", + "x": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "y": [ + 0.2, + 0.2, + 0.2, + 0.2, + 0.2 + ], + "type": "scatter" + } + ], + "layout": { + "title": { + "text": "Marginal View of relative x and y position of the robot with respect to the object." + }, + "xaxis": { + "title": { + "text": "relative_x" + } + }, + "yaxis": { + "title": { + "text": "relative_y" + } + }, + "template": { + "data": { + "histogram2dcontour": [ + { + "type": "histogram2dcontour", + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ] + } + ], + "choropleth": [ + { + "type": "choropleth", + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + } + ], + "histogram2d": [ + { + "type": "histogram2d", + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ] + } + ], + "heatmap": [ + { + "type": "heatmap", + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ] + } + ], + "heatmapgl": [ + { + "type": "heatmapgl", + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ] + } + ], + "contourcarpet": [ + { + "type": "contourcarpet", + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + } + ], + "contour": [ + { + "type": "contour", + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ] + } + ], + "surface": [ + { + "type": "surface", + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ] + } + ], + "mesh3d": [ + { + "type": "mesh3d", + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + } + ], + "scatter": [ + { + "marker": { + "line": { + "color": "#283442" + } + }, + "type": "scatter" + } + ], + "parcoords": [ + { + "type": "parcoords", + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + } + } + ], + "scatterpolargl": [ + { + "type": "scatterpolargl", + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + } + } + ], + "bar": [ + { + "error_x": { + "color": "#f2f5fa" + }, + "error_y": { + "color": "#f2f5fa" + }, + "marker": { + "line": { + "color": "rgb(17,17,17)", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "bar" + } + ], + "scattergeo": [ + { + "type": "scattergeo", + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + } + } + ], + "scatterpolar": [ + { + "type": "scatterpolar", + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + } + } + ], + "histogram": [ + { + "marker": { + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "histogram" + } + ], + "scattergl": [ + { + "marker": { + "line": { + "color": "#283442" + } + }, + "type": "scattergl" + } + ], + "scatter3d": [ + { + "type": "scatter3d", + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + } + } + ], + "scattermapbox": [ + { + "type": "scattermapbox", + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + } + } + ], + "scatterternary": [ + { + "type": "scatterternary", + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + } + } + ], + "scattercarpet": [ + { + "type": "scattercarpet", + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + } + } + ], + "carpet": [ + { + "aaxis": { + "endlinecolor": "#A2B1C6", + "gridcolor": "#506784", + "linecolor": "#506784", + "minorgridcolor": "#506784", + "startlinecolor": "#A2B1C6" + }, + "baxis": { + "endlinecolor": "#A2B1C6", + "gridcolor": "#506784", + "linecolor": "#506784", + "minorgridcolor": "#506784", + "startlinecolor": "#A2B1C6" + }, + "type": "carpet" + } + ], + "table": [ + { + "cells": { + "fill": { + "color": "#506784" + }, + "line": { + "color": "rgb(17,17,17)" + } + }, + "header": { + "fill": { + "color": "#2a3f5f" + }, + "line": { + "color": "rgb(17,17,17)" + } + }, + "type": "table" + } + ], + "barpolar": [ + { + "marker": { + "line": { + "color": "rgb(17,17,17)", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "barpolar" + } + ], + "pie": [ + { + "automargin": true, + "type": "pie" + } + ] + }, + "layout": { + "autotypenumbers": "strict", + "colorway": [ + "#636efa", + "#EF553B", + "#00cc96", + "#ab63fa", + "#FFA15A", + "#19d3f3", + "#FF6692", + "#B6E880", + "#FF97FF", + "#FECB52" + ], + "font": { + "color": "#f2f5fa" + }, + "hovermode": "closest", + "hoverlabel": { + "align": "left" + }, + "paper_bgcolor": "rgb(17,17,17)", + "plot_bgcolor": "rgb(17,17,17)", + "polar": { + "bgcolor": "rgb(17,17,17)", + "angularaxis": { + "gridcolor": "#506784", + "linecolor": "#506784", + "ticks": "" + }, + "radialaxis": { + "gridcolor": "#506784", + "linecolor": "#506784", + "ticks": "" + } + }, + "ternary": { + "bgcolor": "rgb(17,17,17)", + "aaxis": { + "gridcolor": "#506784", + "linecolor": "#506784", + "ticks": "" + }, + "baxis": { + "gridcolor": "#506784", + "linecolor": "#506784", + "ticks": "" + }, + "caxis": { + "gridcolor": "#506784", + "linecolor": "#506784", + "ticks": "" + } + }, + "coloraxis": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "colorscale": { + "sequential": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ], + "sequentialminus": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ], + "diverging": [ + [ + 0, + "#8e0152" + ], + [ + 0.1, + "#c51b7d" + ], + [ + 0.2, + "#de77ae" + ], + [ + 0.3, + "#f1b6da" + ], + [ + 0.4, + "#fde0ef" + ], + [ + 0.5, + "#f7f7f7" + ], + [ + 0.6, + "#e6f5d0" + ], + [ + 0.7, + "#b8e186" + ], + [ + 0.8, + "#7fbc41" + ], + [ + 0.9, + "#4d9221" + ], + [ + 1, + "#276419" + ] + ] + }, + "xaxis": { + "gridcolor": "#283442", + "linecolor": "#506784", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "#283442", + "automargin": true, + "zerolinewidth": 2 + }, + "yaxis": { + "gridcolor": "#283442", + "linecolor": "#506784", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "#283442", + "automargin": true, + "zerolinewidth": 2 + }, + "scene": { + "xaxis": { + "backgroundcolor": "rgb(17,17,17)", + "gridcolor": "#506784", + "linecolor": "#506784", + "showbackground": true, + "ticks": "", + "zerolinecolor": "#C8D4E3", + "gridwidth": 2 + }, + "yaxis": { + "backgroundcolor": "rgb(17,17,17)", + "gridcolor": "#506784", + "linecolor": "#506784", + "showbackground": true, + "ticks": "", + "zerolinecolor": "#C8D4E3", + "gridwidth": 2 + }, + "zaxis": { + "backgroundcolor": "rgb(17,17,17)", + "gridcolor": "#506784", + "linecolor": "#506784", + "showbackground": true, + "ticks": "", + "zerolinecolor": "#C8D4E3", + "gridwidth": 2 + } + }, + "shapedefaults": { + "line": { + "color": "#f2f5fa" + } + }, + "annotationdefaults": { + "arrowcolor": "#f2f5fa", + "arrowhead": 0, + "arrowwidth": 1 + }, + "geo": { + "bgcolor": "rgb(17,17,17)", + "landcolor": "rgb(17,17,17)", + "subunitcolor": "#506784", + "showland": true, + "showlakes": true, + "lakecolor": "rgb(17,17,17)" + }, + "title": { + "x": 0.05 + }, + "updatemenudefaults": { + "bgcolor": "#506784", + "borderwidth": 0 + }, + "sliderdefaults": { + "bgcolor": "#C8D4E3", + "borderwidth": 1, + "bordercolor": "rgb(17,17,17)", + "tickwidth": 0 + }, + "mapbox": { + "style": "dark" + } + } + } + }, + "config": { + "plotlyServerURL": "https://plot.ly" + } + }, + "text/html": "
    " + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fpa = MoveAndPickUp(milk_description, arms=[Arms.LEFT.value, Arms.RIGHT.value, Arms.BOTH.value], grasps=[Grasp.FRONT.value, Grasp.LEFT.value, Grasp.RIGHT.value, Grasp.TOP.value])\n", + "p_xy = fpa.policy.marginal([fpa.variables.relative_x, fpa.variables.relative_y])\n", + "fig = go.Figure(p_xy.root.plot(), p_xy.root.plotly_layout())\n", + "fig.update_layout(title=\"Marginal View of relative x and y position of the robot with respect to the object.\")\n", + "fig.show()" + ], + "metadata": { + "collapsed": false, + "ExecuteTime": { + "end_time": "2024-03-21T13:47:02.951463Z", + "start_time": "2024-03-21T13:47:01.712089Z" + } + }, + "id": "24bc79646157a9bf", + "execution_count": 4 + }, + { + "cell_type": "markdown", + "source": [ + "Next, we will perform pick up tasks using the default policy and observe the success rate.\n", + "The robot will now experiment with the behaviour specified by the default policy and observe his success rate in doing so.\n", + "After finishing the experiments, we insert the results into the database." + ], + "metadata": { + "collapsed": false + }, + "id": "b5cb56317f506b04" + }, + { + "cell_type": "code", + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 500/500 [00:30<00:00, 16.24it/s, Success Probability=0.228]\n", + "Inserting TaskTree into database: 100%|██████████| 5049/5049 [01:15<00:00, 66.72it/s] \n" + ] + } + ], + "source": [ + "pycram.orm.base.ProcessMetaData().description = \"Experimenting with Pick Up Actions\"\n", + "fpa.sample_amount = 500\n", + "batches = 1\n", + "for batch in tqdm.tqdm(range(batches), total=batches, desc=\"Processing Batches\", disable=True):\n", + " with simulated_robot:\n", + " fpa.batch_rollout()\n", + " task_tree.insert(session)\n", + " reset_tree()\n", + "session.commit()" + ], + "metadata": { + "collapsed": false, + "ExecuteTime": { + "end_time": "2024-03-21T13:48:49.425825Z", + "start_time": "2024-03-21T13:47:02.952200Z" + } + }, + "id": "7461b696b899f603", + "execution_count": 5 + }, + { + "cell_type": "markdown", + "source": [ + "Let's query the data that is needed to learn a pick up action and have a look at it." + ], + "metadata": { + "collapsed": false + }, + "id": "2122db4e86143db9" + }, + { + "cell_type": "code", + "outputs": [ + { + "data": { + "text/plain": " arm grasp relative_x relative_y\n0 left left -0.546259 -0.356499\n1 left right -0.203552 -0.605282\n2 left left -0.230694 -0.350203\n3 left front -0.366892 0.442297\n4 left right -0.296431 0.054815\n.. ... ... ... ...\n109 right front -0.014655 0.674613\n110 right right 0.039657 0.299975\n111 left front -0.173449 0.398118\n112 left left -0.155267 0.715950\n113 left right 0.148996 0.282944\n\n[114 rows x 4 columns]", + "text/html": "
    \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    armgrasprelative_xrelative_y
    0leftleft-0.546259-0.356499
    1leftright-0.203552-0.605282
    2leftleft-0.230694-0.350203
    3leftfront-0.3668920.442297
    4leftright-0.2964310.054815
    ...............
    109rightfront-0.0146550.674613
    110rightright0.0396570.299975
    111leftfront-0.1734490.398118
    112leftleft-0.1552670.715950
    113leftright0.1489960.282944
    \n

    114 rows × 4 columns

    \n
    " + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "samples = pd.read_sql(fpa.query_for_database(), engine)\n", + "samples" + ], + "metadata": { + "collapsed": false, + "ExecuteTime": { + "end_time": "2024-03-21T13:48:49.442672Z", + "start_time": "2024-03-21T13:48:49.426520Z" + } + }, + "id": "5d9cd8fe3195d669", + "execution_count": 6 + }, + { + "cell_type": "markdown", + "source": [ + "We can now learn a probabilistic model from the data. We will use the JPT algorithm to learn a model from the data." + ], + "metadata": { + "collapsed": false + }, + "id": "b51a7ee5d60ae120" + }, + { + "cell_type": "code", + "outputs": [], + "source": [ + "variables = infer_variables_from_dataframe(samples, scale_continuous_types=False)\n", + "model = JPT(variables, min_samples_leaf=25)\n", + "model.fit(samples)\n", + "model = model.probabilistic_circuit" + ], + "metadata": { + "collapsed": false, + "ExecuteTime": { + "end_time": "2024-03-21T13:48:49.458656Z", + "start_time": "2024-03-21T13:48:49.443434Z" + } + }, + "id": "8cfff78b3abd589b", + "execution_count": 7 + }, + { + "cell_type": "code", + "outputs": [], + "source": [ + "arm, grasp, relative_x, relative_y = model.variables" + ], + "metadata": { + "collapsed": false, + "ExecuteTime": { + "end_time": "2024-03-21T13:48:49.462221Z", + "start_time": "2024-03-21T13:48:49.459897Z" + } + }, + "id": "77642e8f22ac880a", + "execution_count": 8 + }, + { + "cell_type": "markdown", + "source": [ + "Let's have a look at how the model looks like. We will visualize the model density when we condition on grasping the object from the front with the left arm." + ], + "metadata": { + "collapsed": false + }, + "id": "9d6f0b2705e5ad5a" + }, + { + "cell_type": "code", + "outputs": [ + { + "data": { + "application/vnd.plotly.v1+json": { + "data": [ + { + "hovertext": [ + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.40984224003688025", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.646004144008639", + "Likelihood: 0.24991480928232573", + "Likelihood: 0.24991480928232573", + "Likelihood: 0.24991480928232573", + "Likelihood: 0.24991480928232573", + "Likelihood: 0.24991480928232573", + "Likelihood: 0.24991480928232573", + "Likelihood: 0.24991480928232573", + "Likelihood: 0.24991480928232573", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457", + "Likelihood: 0.5706693888192457" + ], + "marker": { + "color": [ + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.40984224003688025, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.646004144008639, + 0.24991480928232573, + 0.24991480928232573, + 0.24991480928232573, + 0.24991480928232573, + 0.24991480928232573, + 0.24991480928232573, + 0.24991480928232573, + 0.24991480928232573, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457, + 0.5706693888192457 + ] + }, + "mode": "markers", + "name": "Samples", + "x": [ + 0.09618009638148384, + 0.43031206381739107, + 0.6480203113993551, + 0.1837227321090814, + 0.08105428595766073, + -0.3843375423135814, + 0.36178157340983275, + 0.11699941046666318, + -0.7473585091225403, + 0.6336728448430832, + 0.5615223287930721, + 0.21687440026144722, + 0.5390792939564261, + 0.5714404163592525, + -0.08305626535618815, + -0.4231911079335651, + 0.31460970679235867, + 0.6533005980074417, + 0.6087344535558751, + 0.18387129534820357, + -0.12957626041442338, + -0.5990120980964402, + -0.21105887084732078, + 0.07805165758995358, + 0.6387755975111641, + 0.050906898145439694, + -0.6315546532399963, + -0.25890718171717697, + 0.5515949314935867, + -0.05190474393522282, + -0.4116031037743863, + 0.2162712648651034, + 0.01955231417691139, + 0.5567813587339762, + 0.590484480856691, + -0.16316844516034912, + -0.010759542356443497, + 0.2767242831551472, + -0.3615602986542023, + -0.14135154783946635, + 0.6276210972085193, + -0.7846459415160606, + 0.10809781761647352, + -0.7763539944442603, + 0.5013324609693813, + -0.5063812693225811, + 0.0857412386417793, + -0.6672209190227912, + 0.3890753110239914, + 0.3916496837911184, + 0.2519303396339111, + -0.45821256283648876, + -0.05293548818172489, + -0.2356455257029303, + -0.3566875365100312, + -0.6369941005475077, + 0.10206945894707253, + -0.1177095280787217, + -0.25777389558869546, + -0.22357293423288505, + 0.2982305225900873, + 0.5396621477037383, + -0.6833614419915796, + -0.08896950994035813, + -0.20831974783996665, + 0.16628666004929304, + 0.07139615803064514, + -0.4011160308319073, + 0.5024702508970894, + 0.36188009607341043, + 0.563801194834561, + 0.10849542571383519, + -0.4530440213622212, + 0.5828544373330892, + -0.009892835778867792, + -0.6663479376850958, + -0.798171048325327, + 0.028485163744129682, + -0.06002720476396772, + 0.4143337898442213, + -0.6487453918680048, + -0.46307044212758774, + 0.1798361175409493, + -0.7540630616722632, + 0.06548077363368687, + 0.5313612723541649, + -0.14311089991738835, + 0.23568588765003085, + -0.03616933489882479, + 0.5837079716151191, + 0.08401270671167183, + 0.10878518288200589, + -0.6850772436858547, + -0.7011900724851082, + -0.6639182304646254, + 0.4513502532250123, + -0.41661990727806186, + -0.6298159046415148, + -0.6073589670861075, + 4.0733739661813484E-4, + -0.4427820767119767, + 0.3571245430992317, + 0.04340328549447092, + 0.5510196185829189, + 0.1224609599751737, + -0.4513943401403866, + 0.554868188956347, + -0.4090243137326361, + -0.3338503721251483, + -0.48797296886954883, + 0.34835827277766607, + 0.5497918200641342, + -0.7640794248598187, + 0.18766627571154193, + 0.4035820305833945, + -0.18592142089055752, + -0.09469680130226299, + -0.1323892842319907, + -0.5938268958025765, + 0.6004523883196843, + 0.6360460263357864, + -0.1640263552014537, + 0.2400359236123616, + -0.4591688175050981, + 0.4181916124727022, + 0.4812868906013944, + -2.4440852064311347E-4, + -0.011952417539964455, + -0.28011537076049287, + -0.17425273771220173, + -0.7698759623360227, + 0.2505941217355495, + -0.7395177233835485, + 0.2775229362035593, + -0.36150401866332477, + 0.10309963243104758, + 0.640685345347409, + -0.0866408190870942, + -0.7517297893358256, + -0.7879027133225234, + -0.21468180353537836, + -0.554571207179249, + 0.38267844320798494, + 0.25992657292836474, + 0.5201698473001707, + -0.071062041009608, + -0.08407787728301508, + 0.5953240060061854, + 0.6248234664973024, + -0.44104830979401144, + -0.7817728888427216, + -0.4787668573331263, + -0.07949835481400958, + -0.42633772958905797, + -0.549112906661449, + 0.09071553461087312, + -0.009242834466978933, + 0.6238900302199456, + 0.009742829179126833, + 0.07177441273246554, + 0.6022276651221822, + 0.3594719970002743, + 0.4705851031230387, + 0.2030487257982928, + -0.5564354202549149, + -0.3498603028153076, + -0.7461148539195203, + -0.6570882747906832, + -0.20935581677545145, + 0.18104472027583451, + 0.10155448034978742, + -0.44825267289017856, + 0.0950007738535652, + -0.2382368118553223, + 0.22831535337121467, + 0.3493500780989306, + -0.6870312397720039, + -0.359988654674303, + -0.6331489009176957, + 0.6234122585220424, + 0.2171956787152124, + -0.11761582513571234, + 0.5583396523771996, + -0.1272454406978446, + -0.25266079601955826, + -0.6536017777018104, + 0.11532734448564852, + 0.23940983082934608, + 0.6073096785180127, + 0.5431556574085715, + -0.5034521412836557, + -0.4882366229832014, + 0.48369833385946903, + -0.2723094190859745, + 0.2894778419222098, + 0.24620697981438477, + 0.1996243320431853, + 0.09413885044061754, + -0.3187500760738638, + 0.1884973992784884, + 0.37594122607147373, + 0.21130778851405652, + -0.3783418335398438, + 0.49323766411428893, + 0.20918530070106567, + -0.6221859029580121, + -0.3931685286317461, + -0.30704293570936203, + 0.5058108160069189, + 0.3713092882350638, + -0.05136314665084207, + -0.1584752231912343, + 0.04093547005226772, + -0.7107908879752035, + 0.20580146171846347, + -0.7516000669599029, + -0.4762692947443985, + -0.7487140581771505, + -0.48595656504838214, + 0.032058247445664656, + -0.22064300932940373, + -0.7982985273141081, + -0.4425654512391229, + 0.17953828880738287, + 0.29110130540528234, + -0.1997834416855626, + -0.16955616928832196, + -0.4158273379112539, + -0.5654624992701776, + 0.30467624403354454, + -0.44188901775961226, + -0.7076302641124855, + -0.0029945393827358613, + 0.4509411459598466, + 0.3467190861255699, + 0.3727270230080343, + -0.022699908177690076, + 0.5732314888848068, + -0.41199096706318494, + 0.5702293061791889, + 0.09861289627832848, + -0.6539853856293838, + -0.24106281995132972, + 0.5400343270513929, + -0.6425981434071257, + 0.3834134905815886, + -0.15921932757792534, + 0.4243626150052243, + 0.6133824836678506, + -0.4376327006654658, + -0.8068263198270775, + -0.3638465806834738, + -0.09335370392301301, + -0.2173152764991284, + -0.6586118428189336, + 0.12023849072861104, + 0.1404718308647145, + 0.2796035911406608, + -0.18405176385982824, + 0.22104779717499923, + -0.20380663527558063, + -0.023388153934184253, + -0.4384938071238055, + 0.3538734642946547, + 0.5827065217502004, + 0.2639991041741724, + 0.17112971387689202, + -0.47276927383646855, + 0.06326702228698977, + -0.7897983972075031, + -0.4142373032757283, + 0.3821650412081058, + -0.6344288164068467, + 0.3489653831243599, + 0.5338484012729704, + -0.1880125372142919, + 0.064602986842619, + 0.42013606798242453, + 0.6216248029561567, + 0.4412411365388048, + 0.29712750732178483, + -0.5289647339877787, + -0.06658564885171847, + -0.18650627690803823, + 0.0810268983440604, + 0.35615804921737293, + -0.5856780498340928, + -0.7114436742034521, + -0.4426962312021077, + -0.326580269104615, + -0.3812057360768767, + 0.5940497896801632, + -0.5808231818180757, + 0.41993312328475285, + -0.6897540082546849, + 0.4670896465575908, + 0.18233535370059328, + -0.10701920554814937, + 0.11745191963640955, + -0.3381502341025981, + -0.5528426333251475, + 0.08724384710913446, + -0.21266161254962268, + 0.00483416629314648, + -0.36107209882486535, + -0.6348984588521968, + -0.32290477647064003, + -0.6446898829889958, + 0.21224109501517574, + 0.5489947806037029, + 0.5024958300902681, + 0.332416567648831, + 0.37184149464480487, + -0.4691174481655676, + -0.3558070165233584, + -0.2583065417846234, + -0.3637440589638966, + 0.6032083538422256, + -0.7576865575093402, + -0.15476055816590728, + 0.36115507750381937, + 0.10421108033503101, + -0.7755124804779497, + -0.11787011817862514, + 0.027745086991828094, + -0.7463929360840328, + -0.37137830551694095, + -0.6880426148548564, + -0.4206345909099583, + -0.5048959582256487, + 0.11644365758719655, + -0.7616331154392442, + -0.385057424540592, + -0.05421440110168718, + -0.3039347291749237, + -0.03564144484200493, + 0.14322163991733383, + 0.10249670206987649, + 0.2503370318685302, + 0.1667374987425766, + 0.09158109665238234, + -0.23292160169810683, + -0.6668107536350723, + -0.02921977913526308, + 0.4371792340978159, + 0.25030027037366864, + -0.7706657878953296, + -0.6367801212124888, + 0.012296762729823496, + 0.06793562355662641, + -0.5312509685683455, + 0.46293772037488756, + -0.4705163772769122, + 0.3411213280765525, + 0.5816817728138665, + 0.40747616167158507, + 0.4675200904359472, + -0.3870721901702436, + -0.5692392637829481, + 0.5646686951746732, + -0.14827321765296175, + 0.546456646532591, + -0.2229604649500181, + 0.169204842152738, + -0.3377992127565802, + -0.02205900719360354, + -0.3086445772373722, + -0.0032734248240084973, + -0.7031518132592867, + -0.3633441166561335, + 0.30796629847499857, + -0.4501295908276126, + 0.4789005282591775, + 0.048144085753550114, + -0.7515869960115719, + -0.4592035836846476, + 0.10554508131375762, + 0.6219986789678481, + 0.18074448255193898, + -0.14828872344298394, + -0.7340898465411504, + 0.6325377674969103, + 0.016062478414879733, + 0.2662638422877036, + -0.07269910855832562, + 0.5312263981992437, + 0.05813480298122364, + 0.2996094807960613, + 0.5077112613091826, + -0.28875779072965846, + -0.010624340204780425, + 0.6424630767195517, + 0.02972887772764754, + 0.3902615004683644, + 0.5164778703856959, + 0.3808450915554088, + -0.32847041426235224, + -0.25687839076598074, + -0.5948489188927637, + 0.3905154542523729, + 0.496583347064819, + -0.4108782148913739, + 0.1102966154859566, + -0.09852630842295251, + 0.3766338058967863, + -0.31581110162850384, + 0.6074940493439084, + -0.5227059333490793, + -0.4481391325010981, + 0.6057965192088525, + -0.3457991728512884, + -0.1661947800390715, + -0.6145061286836195, + -0.4375990651842248, + -0.28493028704531276, + -0.28681930578165893, + -0.7875338477373468, + -0.5822703927090795, + -0.4483706753572492, + -0.6882227883881104, + -0.32085152493574415, + 0.05300779553214652, + -0.35762511099086247, + 0.04432643063724706, + -0.76710090954316, + -0.02008979343477546, + -0.09925449502312911, + 0.01615923682879361, + -3.84292953246157E-4, + 0.3744103449617059, + 0.4653227291294081, + -0.6737517263031698, + 0.26806314773068685, + -0.3977682765042444, + 0.3510407652116835, + 0.055655788360456815, + -0.6485614447559181, + -0.4096765967045531, + -0.011666566219017627, + 0.47848957367252554, + -0.019810828808782932, + -0.04893763320130973, + 0.04540009836257064, + -0.40657747530468563, + -0.17397608786662455, + -0.34165114145447256, + -0.5129039900329457, + -0.06285776289140177, + 0.4067582551668686, + -0.7911559135649868, + -0.45898038857247364, + -0.5318788021667122, + -0.016067441989082165, + 0.06668278345925216, + -0.6761692659809337, + -0.1316820472882516, + 0.3179920793353642, + -0.02576735568960664, + 0.09487790283475628, + -0.27576127552350727, + -0.4115486610781893, + 0.4625026840944758, + -0.5151110939553195, + -0.4681567769206848, + 0.1752662315282757, + -0.3928707832513811, + -0.17822961646736746, + 0.47528430832437973, + -0.5727222221067492, + 0.39449418502341704, + -0.3096462975975583, + 0.5788090463449639, + -0.7216747161469838, + 0.4035903749138755, + -0.018753002020948206, + 0.04899423128120595, + 0.4807700500047417, + -0.6451987444532765, + 0.27173487031159616, + 0.4556522039448866, + -0.1845182372948878, + 0.3761815743366207, + -0.03711451632155671, + -0.7582027275607442, + 0.1375918252266195, + -0.20088249476328968, + -0.4061914904491556, + 0.2503755455572715, + -0.2579248223687216, + -0.3957947440473678, + -0.31506403361056684, + -0.8033047905961724, + -0.2711920014558755, + 0.27857861112989546, + 0.6531027852813606, + 0.4328890928915078, + 0.13286062728341874, + -0.23902263585333028, + -0.047539206363181985, + -0.7228286915072749, + -0.3681353168127971, + -0.12922786050440305, + -0.11354681340861117, + -0.41477999918814873, + 0.3017136573840927, + -0.7020514061815917, + 0.23024267310305147, + 0.4908136165655762, + -0.16047801634380632, + 0.4820827014553689, + -0.30372624122586955, + -0.013783494090488402, + 0.286434444164538, + -0.5538134639312048, + 0.27460702634640455, + -0.16034716175405894, + 0.21751888486140747, + -0.07143352433549655, + -0.7982924741140436, + -0.34871401828643905, + 0.412651595010178, + 0.05196814018829288, + 0.07677058657919678, + -0.23160378605129817, + 0.22423817523253853, + -0.4935788021037541, + -0.644140738537462, + -0.5442756594074554, + 0.5689694534848947, + -0.03616855677422948, + -0.7608578963720046, + -0.12718615266904143, + -0.22525494130158163, + -0.5007284145786628, + 0.15962188124330245, + -0.22612215686609838, + 0.03574723207069708, + -0.21393852346361408, + 0.3094406304127356, + 0.14351824251389167, + -0.337833359361793, + -0.0923825008871858, + 0.6482842281946454, + -0.5860857905635386, + 0.23503266169522974, + -0.5747453417657562, + -0.47593470975067725, + 0.27169254433403334, + -0.634887922784036, + -0.5904654048629591, + 0.250559238149907, + 0.429585766320984, + 0.002354939753809626, + 0.21931557966717763, + -0.4492380326593739, + -0.003688565998311133, + -0.22120108737441235, + 0.1675975947566224, + 0.47225518213215134, + -0.5951342313672306, + 0.18507831415974374, + 0.2268585087417997, + 0.0649669912961307, + -0.08799367137767689, + -0.13231557536252514, + -0.25233968100175186, + 0.043641825939349954, + 0.14263190252529967, + 0.3482795780839626, + -0.052215252432331605, + -0.5413051129865929, + -0.3734645813704565, + 0.47526252918795164, + -0.27861495016947957, + -0.22160006197756488, + -0.7646183473538332, + -0.1031644482753904, + 0.09827816374495535, + -0.29531930805482975, + 0.6255213467053372, + -0.04399599460969583, + -0.07486868830180116, + -0.23663354299170536, + -0.0732091214498366, + -0.6530112208839414, + -0.17328945941096674, + -0.2859914993426761, + 0.5499533993993059, + -0.1327458758096388, + 0.04040412467909382, + -0.7388402868416095, + 0.05458853539324182, + -0.446252971244753, + -0.3695714604675427, + 0.5020098798418665, + 0.20466831653095674, + 0.28733508778879846, + 0.49774806645712666, + -0.7780747442364088, + -0.41674540690150796, + -0.6251350195347662, + 0.3036394152228822, + 0.1406259518329981, + -0.09498585066596965, + -0.13758760237542955, + -0.26010114738508283, + 0.07961951486810692, + -0.3517615221771556, + -0.1824607583292922, + -0.6902173437508929, + 0.38128012471776096, + -0.11151748914687498, + 0.05650053954515033, + -0.27824699061168756, + -0.6201657549222179, + -0.5096702807809413, + 0.09893101249001479, + -0.34212630770512403, + -0.6403777983229675, + 0.2593406288960919, + 0.4796154857665925, + 0.33848151659452885, + 0.47839362872509505, + -0.35112026987567874, + -0.021730314019288377, + 0.35189784049860984, + 0.4543225964450862, + 0.19820890252988688, + -0.16457447827818028, + -0.3960946139284449, + 0.20104111399679214, + 0.2685751293000095, + -0.7783415427072299, + 0.4812689772776867, + -0.0799016063887159, + 0.39547291696485687, + -0.25130010471380604, + -0.06250894633216442, + 0.0259324949532862, + -0.5818033284810613, + 0.6501147284922139, + -0.24909077098915688, + -0.19778003614416584, + -0.5448640876529343, + 0.6465275803536333, + 0.38581434193597997, + -0.20803654289023854, + -0.12657772770151143, + 0.3770374215836564, + -0.12014167504787909, + -0.18100048448566786, + -0.019302958143449844, + -0.46790974864401347, + -0.6459420838927248, + -0.4441396817927757, + 0.513580565906162, + 0.2435007990171204, + -0.36855505787816145, + 0.13797582100187655, + -0.11720523731838317, + -0.5961992817919994, + -0.6893813219619968, + -0.6261507010665444, + 0.03094779150331084, + -0.4088787892867179, + 0.49309210500610956, + -0.789383307632902, + -0.5813854143800014, + 0.03321513161067613, + -0.30753624520346023, + 0.08717866872860036, + 0.549398988090679, + -0.472996239819259, + -0.6852597845749782, + -0.7084134781312059, + 0.5019405850115558, + 0.5028257461100002, + 0.4825941565766224, + -0.7840040250831931, + -0.6643443659814826, + 0.47304681169578233, + -0.5563747503792138, + 0.6015167849130204, + 0.634123681001063, + -0.2876882300736481, + 0.37987553170271526, + -0.7561588200747223, + -0.7261067715079524, + -0.5525794341227355, + -0.1084671305495204, + 0.5018388076772736, + 0.3322750701262024, + 0.5823323759612024, + -0.6220949250130842, + 0.3173068381148666, + -0.7606765535701083, + -0.1408980869194657, + -0.2515098428780478, + -0.17014990080315073, + -0.21865147950191466, + -0.10955310295021636, + 0.25473002925287525, + -0.1414366690139176, + -0.2938411184946803, + -0.4051829268001682, + -0.40645184380462523, + 0.37071748584275677, + 0.1636666717317945, + 0.202883826629089, + -0.5633292487334121, + -0.12356752546457206, + -0.010297657414070072, + 0.058276907262778344, + -0.38503608179218274, + 0.5454025228690075, + -0.5012406565892418, + 6.358982668720481E-4, + -0.15115254526741062, + 0.4908187882737044, + -0.5874331083023581, + -0.6815901419274778, + 0.2292651560553266, + 0.21120957967234155, + -0.21643800877473252, + 0.20059976318838169, + -0.008703631223517472, + 0.6256459251589231, + 0.2439962505182015, + -0.1505646629259263, + -0.7647504864944921, + -0.6018663146014014, + -0.658959395683756, + -0.13594706732372086, + -0.19635528919596634, + -0.5157077128709818, + -0.12244999967407533, + -0.7071969586763651, + -0.29761410447721015, + -0.47679823404419064, + -0.1641765083580936, + 0.015866477836917525, + 0.47611422662299685, + 0.4316504689611643, + -0.5900202022153664, + -0.1058617471890525, + -0.49729583834165414, + -0.7944341653398069, + 0.08233940504574822, + 0.03444726779932461, + 0.35776421016102333, + -0.27465707498681435, + -0.5640555295771754, + -0.2161041094680839, + -0.7740884740724926, + 0.6469429261102336, + -0.16565299708867565, + 0.2653041093968799, + 0.6487096032980685, + 0.5804992916219939, + 0.22991725101215488, + -0.5871673344809126, + -0.6561114436646327, + 0.17462642248659754, + -0.27854925841251055, + -0.7180893540320731, + -0.3763699103110492, + 0.5311309919519652, + 0.4240941865848388, + 0.5925422160446184, + 0.14379776956464596, + -0.4462217620072601, + -0.6420734417385909, + -0.35327996463182415, + -0.6720819790958927, + 0.5407258174059183, + -0.4911046156286281, + 0.4416615977137849, + 0.17716949213842814, + 0.12240067479855621, + -0.462998676777076, + 0.6248726211302186, + -0.059201151555649756, + -0.13715052169228903, + 0.04778757368041109, + -0.44121911256137647, + -0.12187352020770248, + -0.6779719193065468, + -0.051196610996738334, + 0.35834137149128054, + -0.08824566194465244, + 0.2009119117227639, + 0.0695874911053439, + -0.46993219877071796, + -0.28268809751883184, + 0.19236249098560543, + -0.0871066530301019, + -0.2908525430164589, + -0.6179320015704317, + 0.36772923086137055, + -0.5676119202963917, + -0.46417565173356834, + -0.17255846911919026, + -0.70212740383717, + -0.08154451566333631, + -0.17259515021282223, + 0.4616350767522265, + 0.3667871085779312, + 0.15705463828981525, + -0.2605160080151754, + -0.5662997448051588, + -0.25733391989388266, + 0.5175697684209165, + 0.08677821467857982, + 0.25734125321795454, + 0.6341174306767378, + -0.624723474695883, + 0.4766692201088819, + -0.6996063794105876, + -0.18870257688490977, + 0.08344135116590468, + 0.4921652317818944, + 0.23279162011608967, + 0.5421892520566524, + -0.11927511076043429, + 0.32038969322820765, + -0.42985927093576654, + 0.6404563226937662, + 0.5623297701451456, + -0.3198963722020567, + 0.49312632220598684, + 0.005210489940187801, + 0.6158870795647674, + 0.21886695459399996, + -0.6868507455083444, + -0.46468672730641897, + 0.5332350945863468, + -0.42586357149905285, + 0.41626369547035014, + 0.2545244612576979, + 0.4762176775391126, + 0.5885646378650099, + -0.04602283501769444, + 0.15969385592599528, + -0.5706533569484542, + -0.2180717441762775, + 0.010330970073576085, + -0.06539117659519933, + -0.6799692860064859, + -0.6704922325019778, + -0.30238134248644677, + -0.48810632192022163, + -0.4268462012642522, + 0.4081642241753186, + 0.5111067715547432, + -0.3443292480701187, + -0.25804190408448346, + 0.30152262920380635, + -0.5197591722642758, + -0.2860198031957719, + -0.5203322197064101, + 0.00713866922173545, + 0.36403257556101865, + -0.4185143402796275, + -0.05286544494994527, + 0.6035894544763346, + 0.30205047999190204, + -0.5125123906605523, + 0.12503008577197328, + -0.3839948194930937, + 0.6241362834967074, + 0.03360616265368488, + -0.5728175337046969, + -0.49200568580989984, + -0.07254724029204085, + -0.6980349180276205, + -0.7810417796277431, + 0.06618821264465768, + -0.1929815478988618, + 0.6576298235457109, + -0.3446727835078697, + -0.2545967278695538, + -0.09508608416130737, + -0.19128274857918015, + 0.22089507041633183, + 0.6583794788193217, + -0.4687504076286029, + -0.20100220681356262, + 0.1665008341998223, + 0.04158220262517398, + -0.13771319796760106, + -0.696345981335666, + 0.3771534203283523, + -0.7606608055472872, + -0.22938953568574627, + -0.7414909853481235, + 0.3233965502332189, + -0.3071407810380742, + 0.26236429922619087, + -0.39447709872553655, + 0.10117998055341582, + -0.27234710268695717, + -0.351694978500746, + 0.5786968290154061, + 0.5652308170667414, + 0.11398502681711431, + 0.047459900714048486, + 0.34171712869925563, + 0.6497530077606487, + -0.4033195620667715, + -0.6852949269039126, + 0.40305520550609597, + -0.14672423870745765, + -0.4356035984469223, + 0.14449408079077697, + 0.5401321710829642, + 0.4093359253834362, + 0.07041087719569417, + -0.34389369859478014, + -0.6336640465143003, + 0.033905861582844254, + -0.1794434081159022, + -0.8025396676093631, + 0.3638972271044335, + -0.0608085418680584, + 0.03937313909918427, + -0.06706274874390172, + -0.6537422747080265, + -0.7645116892984779, + 0.0028405333918770648, + -0.41603671369968326, + -0.12499715210166029, + -0.3628559999512702, + 0.5026751236501744, + -0.2752883268862265, + -0.7490170954494364, + -0.07875644588247044, + -0.542359744009199, + 0.10155115001009585, + 0.5901735411437906, + -0.48136308555324414, + 0.0814989850233172, + -0.5368245726012406, + -0.20877561451254978, + -0.5259836760300832, + 0.29363217294762334, + -0.6390206936585567, + -0.7507393882888146, + -0.7197941734462263, + 0.3929711181157022, + -0.7488335223341571, + -0.6485998672571358, + -0.5709845416661388, + 0.15246052509428465, + -0.5260689838560584, + -0.5396124663372888, + 0.35626674214625964, + -0.7551181537259631, + -0.05037747861520803, + 0.646647455378471, + -0.30734037122739627, + -0.5673670809032723, + -0.09315822329500523, + 0.5115476351603402, + -0.11811811387340199, + 0.19200069524400354, + -0.7686133533413392, + -0.7160441910682316, + -0.005511596362955062, + -0.21981390130899114, + -0.07732277383237107, + 0.4631670299394016, + 0.6521206122986404, + -0.7728609960234203, + 0.6479679432837205, + -0.5260041215463299, + 0.6221781965033352, + -0.3845081166636261, + -0.47927745165154484, + 0.1302816913201189, + 0.60476079267881, + -0.5524282739984177, + -0.08949907162759152, + -0.49340820609503644, + 0.4441568077800774, + -0.271193185650732, + -0.1482323780704211, + 0.5544200298168774, + 0.5277495072256718, + 0.07936702026498765, + -0.39318258727702154, + -0.6382819043154127, + 0.22425143302397388, + -0.01555555976690004, + -0.7800466195529346, + -0.34896266335566645, + 0.26680084182273, + -0.627998514822952, + -0.2545684085772829, + -0.05361142229539073, + -0.6730519005073754, + 0.6502738222048788, + -0.7423725741588287, + 0.3216572880603289, + 0.034715448001506166, + 0.26868361153565223, + -0.6579679584801624, + 0.4865344472901002, + -0.43853711088939085, + -0.7179520624770424, + -0.17062574382853057, + -0.18031350871299023, + -0.5034382819618605, + -0.7815478938931262, + 0.26057988125388987, + -0.035805545098759106, + 0.03507833538683536, + -0.3291411824783992, + -0.491110632643905, + 0.5416950875680403, + -0.23687957036306506, + -0.38105091583761785, + 0.43317779826174896, + 0.5590104451780008, + 0.3072570947475882, + 0.5188576989313186, + -0.3320836431213031, + -0.22877833216653354, + -0.5736915793477346, + -0.02284181566456911, + -0.490180976841086, + -0.040374966315100624, + -0.32296332549603773, + -0.19077145588974032, + 0.1228293290600968, + 0.15364283994092387, + 0.06099772917684254, + -0.02626646530715404, + 0.36532834801476166, + -0.4463076658460345, + -0.7453895775769646, + 0.19705022854622, + 0.08083879618344159, + -0.2736471296519434, + -0.7494206375920643, + -0.12491643896617355, + -0.09357473861755716, + -0.29687311841755304, + -0.5118827484401121, + 0.3770801791321604, + -0.057498576326613704, + -0.22431394977740537, + 0.5549488971375353, + 0.3396452094359167, + 0.2980140702653423, + 0.48676991913087797, + -0.8058921538825761, + -0.30177589111746317, + -0.5768652871163142, + -0.5073692804042824, + 0.2064735326219821, + 0.10901599398503459, + 0.04002655192908655, + -0.6469724540512736, + -0.1292819643943275, + -0.6346233014931002, + -0.7181923971505246, + -0.4124279430684405, + 0.1938407412842421, + -0.753044582332224, + -0.1008191099657253, + -0.28828154042010545, + -0.050579956250949576, + -0.04093189857845614, + 0.6596669395240294, + -0.27374003714119133, + -0.18082312278895596, + -0.3803645430350544, + 0.037524841581399127, + -0.09828722976417681, + -0.5794859243706456, + -0.5204312945889483, + -0.7207166429887336, + -0.03420292852413964, + -0.0322026439139923, + -0.1621842563324819, + 0.5841985219460325, + 0.19292327622331407, + 0.1381846291304949, + 0.43356864561384023, + -0.4396682240660418, + -0.08594210760274834, + 0.5285879159008554, + -0.4409360347763883, + -0.24823019466534135, + 0.5715302507314511, + -0.5878282895797684, + -0.38369362374983995, + 0.1557525908707107, + -0.6211336785395483, + 0.5809845147044405, + 0.4145033270180566, + 0.19067621230528242, + 0.5939848906873252, + -0.5098306661977478, + 0.2702674496855283, + 0.23469662976640893, + -0.16580785151266775, + -0.5192781027811504, + 0.5498643171305387, + 0.19269269114067922, + 0.2923771796799587, + -0.07244184533824438, + -0.5570383432877962, + 0.13540261172134183, + -0.6719206622460434, + 0.14091894802181582, + 0.6145098655708053, + 0.28411288960610903, + -0.27816979500197525, + -0.6825160363124847, + 0.2116516214559968, + 0.44046132039818786, + -0.47280168671617184, + 0.5328438777881487, + -0.43382751154113314, + 0.566475292364483, + -0.5411540287620736, + 0.5565712310102441, + -0.1878200379081687, + -0.19118583913682574, + 0.05684538639322545, + 0.5885684731118942, + -0.341138378451432, + 0.1304895036205307, + -0.42913996323281495, + 0.09234701465883921, + 0.35200805488025144, + 0.3047438485422186, + -0.13599614879266286, + 0.30239168509216585, + -0.13689814902469488, + -0.7660094567498922, + 0.14708827513621447, + -0.6166221911030159, + 0.053804004572976516, + -0.7987372575742892, + -0.7701187726980423, + -0.6447816147462979, + -0.38300166656914003, + 0.3571807656301148, + 0.22931673383067464, + -0.2396451006504916, + -0.4511592650848374, + -0.1923113273840219, + -0.25645378661955476, + 0.4891645580292535, + 0.5787596056735381, + -0.03939776947588847, + -0.5971168890584722, + 0.38591421692019756, + -0.08621611538621188, + -0.554223430041066, + -0.7028480296743302, + 0.12347417889222623, + -0.0799105328743418, + -0.5581939547000261, + 0.05514504282284949, + -0.6871123299456376, + -0.6858409987511103, + -0.5366773884863272, + -0.49291143393301373, + -0.697081466559045, + 0.024200840527423217, + -0.6681468460308602, + 0.5153675415127211, + -0.569772392257886, + 0.638178863636304, + -0.1732440998661221, + -0.6881261406987114, + -0.4565002014438012, + 0.15030052937797878, + 0.49842760957711196, + -0.12139316318981519, + 0.2832725975147373, + 0.6221702503438565, + 0.5364142197037808, + 0.5117395981689018, + 0.023576828424494156, + 0.6313615053202563, + 0.3464034963417909, + 0.15542644608670408, + 0.3625099389631342, + -0.3026031344066993, + 0.4808560160178085, + -0.6090017416270597, + 0.24040628963217003, + -0.5466930459191077, + -0.4804814929925602, + 0.07617842611242098, + -0.49162845144313555, + 0.3837109857764648, + 0.4640152879207934, + 0.3792081928556813, + 0.3678771244008755, + 0.18212711070305987, + -0.7122425364273516, + 0.4931541268539946, + -0.10390127009013239, + -0.5829266683464185, + -0.5453689613503194, + 0.05430124479552423, + 0.15014822584374454, + -0.6188127752884489, + -0.5595686025266258, + -0.02832950404989354, + -0.6835301956112174, + 0.028938469611088258, + -0.3864681527628117, + 0.04737474434888267, + -0.02145336542809151, + 0.40433909325273054, + 0.03526353991727815, + -0.3287304553372438, + -0.44454562157216476, + -0.06650940900837954, + 0.5900824419152676, + -0.2521248155621312, + -0.47104938616463127, + 0.06488390025722623, + 0.033675230423510505, + 0.377522788424114, + 0.18010950615001076, + 0.2944214518868561, + 0.028090894084724982, + 0.3362788454845006, + -0.3975703161604195, + -0.5985825180415603, + 0.1609062002481657, + -0.4908948095533016, + -0.7966997854902905, + -0.12155964701089361, + -0.20824909797355773, + 0.24598333721518595, + 0.25169659178221104, + 0.16669547488663194, + 0.5044456156267955, + 0.17770931583060934, + 0.16746028941543234, + 0.4684945612376955, + 0.5431659718678646, + -0.14018790169112405, + -0.28914965956402783, + 0.6042351852190323, + -0.6861275646254885, + -0.07712352049624938, + -0.8061194305987844, + -0.7611358958875175, + -0.529982067375326, + -0.5902899669185762, + 0.3937901444274018, + -0.5870756758541636, + 0.4682454301874609, + 0.36186771901654324, + -0.24666992844718483, + -0.09929197964447245, + -0.7643183154531659, + -0.7455795548714144, + -0.3102846765134683, + -0.7805695916205673, + -0.7894749848337138, + 0.6000493223556304, + 0.41633632327015635, + 0.438358118615369, + -0.3456629963280855, + -0.06403979623837786, + 0.6379506686926245, + -0.6429641961412584, + 0.24592535714458863, + -0.3424583179308672, + -0.283801600407793, + -0.6964134672060953, + -0.7886654122725796, + -0.7455259569071568, + -0.6528856733120911, + 0.44707165223400425, + -0.08252325955720918, + 0.5564443691454505, + 0.19724428348080247, + 0.22093950567960963, + -0.7675498721895715, + -0.06513389051591134, + 0.655346486508848, + 0.3925934252025901, + -0.7463275216286362, + -0.15778150582362316, + -0.5437171166597929, + -0.5288074104757994, + -0.5668584928803923, + 0.5205788046145886, + -0.5328197364170364, + -0.04508060995978691, + -0.4798558475844048, + 0.17992366712863195, + 0.45844955946979893, + -0.5682782962453838, + -0.6479940920193865, + -0.5343096082712558, + 0.4445818025176108, + -0.002881190266623812, + -0.39400978478564014, + -0.7209069962519601, + -0.4047857612040021, + -0.29462104659850696, + -0.05415461266311994, + -0.2565617462149187, + -0.15876588736645492, + -0.45947237288757314, + -0.7219853031975798, + 0.623154494791394, + 0.3926683156172289, + -0.8021271017038238, + 0.07027374844419088, + 0.06283700179892693, + 0.1623949323447199, + -0.7276838377297602, + -0.2785336467463583, + -0.764846602134081, + -0.7188539108194337, + -0.027994959727934088, + 0.5242750684872873, + -0.6423211883530807, + 0.20306495218031928, + -0.4671986098215259, + 0.45034947297582006, + 0.3468115785664724, + 0.4538392283131766, + 0.28626793177506993, + -0.6020015971911781, + -0.7732623777580117, + -0.5100905025475306, + 0.06665797699586706, + -0.07750151326552146, + -0.6369812484223353, + 0.3947841308909995, + 0.5133832675638236, + -0.582202831969339, + -0.0014819862911967796, + -0.4992592089717931, + 0.22023220733644366, + -0.13911733754386857, + -0.24066751751130255, + 0.44664204987248823, + -0.2146417188988653, + -0.4216684760452698, + -0.1256914549578647, + 0.34703244597337457, + -0.2149364062072615, + -0.5370759345558423, + -0.18716710126646108, + -0.09156274812954235, + -0.5356754426792368, + -0.23958121936297871, + 0.3223367040266524, + -0.2597105897858145, + 0.12925749521891228, + -0.3827557186434801, + -0.3060188976764835, + 0.24832392989353214, + -0.6487576498405426, + -0.6735668328461681, + -0.5768613546183625, + -0.5932384638957386, + -0.02556312173797215, + -0.49940108298684677, + -0.5677752311513186, + 0.44534750478877794, + 0.4591664803614631, + 0.3036283246249075, + -0.15323620692440798, + -0.6009402184646137, + 0.3891369941570991, + 0.12921634998051768, + 0.5456711359488583, + 0.41438832666823433, + 0.6557674174097575, + 0.1451927330625129, + 0.578064957322913, + -0.6119095779751631, + 0.17350707205228777, + 0.14485713467580885, + 0.6561043713243292, + -0.0902134284122833, + 0.12014384287987845, + 0.14067380390467443, + -0.06237864045355601, + -0.16235106375075747, + -0.04113869370410017, + 0.20437618027882942, + 0.43166602699616774, + -0.3165428567032612, + -0.5018918158851545, + 0.008752844819528982, + -0.24169729911392424, + 0.11438018891353918, + -0.03682675357275045, + 0.17417291016522118, + -0.3428207026940877, + -0.09955364749738937, + 0.15291619488932484, + -0.1429808129221588, + 0.02794438033554314, + 0.6307694955338025, + -0.06669476067252955, + -0.011229891233047407, + -0.2602901231166136, + 0.30829778427513077, + 0.08875560025445561, + 0.3758830915252861, + 0.4551581063191231, + 0.3006253997474121, + 0.2739496374009526, + -0.04310280304221947, + -0.5517215517695002, + -0.29496205566656875, + 0.16390033438144014, + -0.4616353199834655, + -0.5433501958230103, + 0.27383958713916845, + -0.8062092970053814, + 0.5795042712564157, + 0.23864158719320072, + 0.44078937869356427, + -0.1938434617560726, + -0.06794443331651356, + 0.2909205472298445, + 0.3548106868027422, + 0.2849685357873294, + -0.021602910949522713, + -0.006591611361447258, + 0.17529400935313444, + 0.23394821126768683, + -0.6181714733074575, + -0.07173997051774184, + -0.5929755737910796, + 0.4184935215187263, + 0.34281601411147056, + -0.329380207444808, + 0.09171412249508737, + 0.09938799900326822, + -0.454787963778421, + -0.7228011039682143, + -0.6795226575614994, + 0.4086898098038839, + 0.31797813062189373, + -0.42791497091782754, + -0.26167351802510985, + -0.7942804043556155, + 0.19803040049264709, + 0.05895218019509241, + -0.5346181000531743, + 0.455406513658967, + -0.7388552298597753, + -0.7518002191141444, + -0.583693753973322, + -0.6967374501894266, + -0.4783334725673041, + -0.6012930373628805, + 0.5647001890714075, + 0.021499448523663478, + 0.10173905833287933, + 0.4730752165726152, + -0.6460746296413493, + -0.3214839646592592, + -0.06947809915828007, + 0.17742070261198684, + -0.14141166766212476, + -0.6943539358753308, + -0.74059878342635, + 0.10710850480208134, + 0.0966961128432392, + -0.7051536554839731, + -0.39816510790657667, + -0.17295352749627457, + 0.06293771972959572, + -0.6705462627557407, + -0.11500442090228191, + -0.1745814905068347, + -0.5858708286253742, + -0.4158930542185121, + 0.23439820616870388, + -0.7229819807023565, + -0.28831398455844937, + 0.48730661478967086, + -0.2985806676471524, + -0.6078162882997096, + -0.8043775277976544, + -0.11487891977159204, + 0.2565551748998153, + -0.5695365617384401, + -0.1733427997970809, + -0.4370089590448461, + 0.24405644287943484, + -0.06697518016406545, + 0.4583248047424756, + 0.156590262656077, + -0.7212566357025215, + 0.6449600869559419, + -0.7884540496829745, + 0.33187464250371124, + 0.4777799742034087, + 0.2969201152111903, + -0.6622295905191468, + 0.1572151184364029, + 0.08215614189557396, + 0.649830773896085, + -0.3759912569854739, + 0.3931650088659745, + -0.09279336161924978, + -0.07818090725755023, + -0.2465358871092843, + -0.5811297179175704, + -0.19821031625431107, + -0.7526915079234984, + -0.01831910131947323, + -0.2556279085496027, + -0.7638463298029728, + -0.6463742281594581, + -0.07440945552437783, + -0.0539984820297712, + -0.40995018521914967, + 0.2830877248390188, + -0.47950189737720234, + 0.6543096432369525, + -0.6519293064635766, + 0.11362865072708495, + -0.7081046820807619, + 0.3792411290406864, + -0.23161075829263267, + 0.020147517770772616, + -0.5225021814227514, + 0.6459802263172033, + 0.20626925421377373, + -0.7846536200628152, + 0.5363403898712374, + 0.2855439093153006, + 0.2511543558225774, + 0.45050125916660366, + 0.06770603401649944, + -0.011391229887946719, + -0.365082891096726, + -0.0902236296107134, + -0.5112183531963881, + -0.714634793072078, + -0.3622346750391128, + -0.4311311338692535, + -0.04137297833179421, + -0.7335315221313466, + -0.25130559199749114, + -0.5020530114924003, + 0.30800646893440564, + 0.19485652892222094, + -0.4224387288687082, + 0.15539587749837447, + 0.4741507903544103, + 0.28037655302613185, + -0.024940996598244447, + -0.7184641561654226, + 0.6272032064727803, + 0.611096228857252, + 0.12402740716838345, + -0.30022343449916444, + -0.44959891097972765, + 0.2142872825871046, + -0.2980392739952502, + -0.24402464274760172, + 0.33226138546768424, + 0.22947407365203165, + 0.32312588420611366, + -0.12610216323850965, + 0.02545538758745447, + 0.5551124464044744, + -0.6130435558815376, + 0.49482439819100954, + 0.6125335265088868, + -0.44122047517943286, + -0.3942097766083795, + 0.4484379010557006, + 0.02060412268121925, + -0.034738878822406116, + -0.17011524379119647, + -0.4539845098527266, + 0.582116717605245, + -0.6469513268061861, + -0.035353482036234785, + 0.3030429572135852, + -0.21576956022784233, + 0.09191682662546641, + 0.33266378710003874, + -0.14310638922217445, + 0.12891167607330345, + -0.17567324566179676, + -0.5687682962897211, + -0.3742082429575773, + -0.6998011595651977, + -0.6624677727180498, + -0.4187637889006174, + -0.048191273718307004, + 0.2550215599719613, + 0.4970259414025032, + 0.6073092097472897, + -0.6832900864437274, + -0.6416510316334518, + -0.5923467403377325, + 0.29566837299271975, + -0.6481933793897666, + 0.26162328560948633, + 0.4112615090854669, + -0.018793735346729346, + 0.3086377306646476, + -0.5454596420795541, + -0.5590615293529213, + 0.5730256474905852, + 0.14859354952160286, + 0.19226662547395357, + 0.49372644612265326, + 0.4169527022806384, + -0.31725031287461647, + 0.33741247854651657, + -0.07849354290444488, + -0.5134569353102165, + 0.16647301553160077, + -0.11453063945153563, + 0.2749351086738402, + -0.07691429600338784, + -0.6485956277975397, + 0.0752427595122871, + 0.24432459331024725, + -0.30528005730769203, + -0.19839063056826922, + 0.4428371900370104, + -0.07536185117114946, + 0.5910590259531819, + -0.6892451178748821, + -0.7961718512715653, + -0.4043744989289071, + 0.2045211095018883, + 0.15333148480058345, + -0.5212352651049144, + -0.06166214607487164, + -0.7111300973866727, + -0.680992496501588, + -0.3788548939916773, + 0.6566356747286773, + -0.5908812169661345, + -0.6004072735502931, + -0.5770412841006205, + -0.7624061246553594, + -0.12917169248135763, + 0.1187965750070955, + 0.3418793458222297, + 0.44597627283011676, + 0.6511111924273377, + 0.09496501030334481, + -0.6685744722248501, + -0.16457267629279004, + 0.2037681030141284, + -0.1250763061334762, + 0.6057406976668708, + -0.17764613831606102, + -0.717398648482511, + 0.11759013314816591, + -0.09316462926932989, + -0.4383396099837211, + 0.4966775275983494, + -0.4958977802594938, + -0.7819496865998974, + -0.33120336992781996, + -0.758321730591034, + -0.24819623316985018, + 0.6587756780109041, + 0.17258162213029782, + -0.5361705227411512, + -0.18091848403517952, + -0.4275439425106788, + 0.002303395659095653, + -0.4379691702839838, + 0.20958517773560914, + -0.1728058001723627, + 0.3476395106433555, + 0.6065794743370864, + -0.036130353158267625, + 0.6244848086552949, + -0.39586624455047964, + -0.1012211811858521, + -0.8013760986937704, + -0.13404190035783525, + -0.22934919984066693, + 0.33494637867015575, + 0.6584722859822741, + 0.2931933468572482, + 0.06304173500305332, + -0.7403099565126224, + 0.4694051072119233, + -0.4715847287808975, + -0.20916565897765738, + 0.1593453742335036, + 0.35245588429601826, + -0.4256954141403987, + -0.2546427326583136, + 0.13261757903445093, + -0.11762029465959367, + -0.5635314209527029, + -0.25155513715260125, + -0.13089408202192476, + -0.39338383297447405, + -0.26814149330434456, + 0.1078653663325364, + -0.7059114550475285, + 0.5642400801603115, + 0.1440705593606313, + -0.18254199021786432, + 0.14227837535927135, + -0.698789836440251, + 0.42761683030705255, + -0.2162059510688359, + 0.07979747457444542, + 0.38215578800584027, + 0.4227454921536761, + 0.5494257098932315, + 0.39105906698707227, + -0.7906870009806753, + -0.7065485651612173, + 0.5856521364976798, + 0.21505441837588501, + -0.6924949518721912, + 0.19954265678573024, + 0.1530030805922683, + -0.2473755353015391, + -0.5993566373175825, + -0.18900894820798053, + 0.22336073677098744, + 0.35977808309137116, + -0.457689070108717, + 0.0283846492175045, + -0.14409680009925363, + -0.1179077176061184, + -0.804846775711475, + -0.5412726651352204, + -0.48484513474541424, + -0.08928110020224012, + -0.5531679225141497, + 0.5672902998873827, + -0.4696040323248857, + 0.44354186086114755, + -0.49069508041117804, + 0.22147362657866554, + -0.6633334854907038, + 0.07261713207604892, + -0.40827923855680726, + -0.7409422943745428, + 0.3738773950897526, + 0.6316127602345717, + -0.37554755841275805, + -0.7741422801498835, + 0.4333630893291941, + 0.5600083132719788, + -0.5340173101854478, + -0.3709948807612897, + 0.05441112696144779, + 0.0324209543649191, + 0.2577406591110104, + 0.378167926248152, + 0.5256901013167977, + -0.17303882476816967, + 0.5014771260353198, + 0.36426287940555724, + -0.5385182548425401, + -0.15318244498364608, + -0.5990130802913043, + 0.44947217367879955, + -0.6740341790407641, + -0.15370781813809953, + 0.1242631872589256, + 0.04234960097655771, + -0.2771050599673748, + -0.1403052811091866, + 0.21718964752314018, + 0.018645665439582237, + -0.3258038899249863, + 0.16865251721434737, + 0.2913630621340778, + -0.22150088258538148, + -0.538077322005148, + -0.1518222736965592, + 0.22514956456373458, + 0.20034602475559582, + 0.6209130873238645, + 0.37695963532382526, + -0.5536989577627877, + -0.4789685748517423, + -0.7650866717409336, + -0.39711260363295164, + -0.18074691469387516, + -0.697537142908584, + -0.10989410641595654, + 0.6238313607321911, + -0.47469880375392937, + -0.6140027814887605, + 0.39636679993040913, + -0.13297571756275994, + 0.2393934060725037, + 0.6563508218833148, + -0.461735728432887, + -0.23147399097110988, + 0.322086661341599, + -0.5804190432660056, + 0.6501211497518055, + -0.4421193342240261, + -0.3084388950071989, + -0.12243081199224448, + 0.5129428858951649, + -0.15120703076717057, + -0.7457018033404521, + 0.5707496312598147, + -0.7791697603999492, + 0.0822757197332743, + -0.18364855776653477, + -0.44465238238123217, + -0.03923880355071596, + -0.5890583422742485, + -0.250432337220188, + -0.2853323279202201, + -0.735316647123334, + 0.15725247700991618, + 0.43225347593813523, + 0.47625143349720933, + -0.3698059391425, + 0.18571016074161684, + -0.09286557166175424, + -0.2108853129754128, + -0.007057212363940524, + 0.12065320828265591, + -0.14486344418943398, + -0.3321383167338205, + -0.31916915374349564, + -0.018457552137974842, + -0.05476526041686569, + -0.44381957782114906, + -0.22665821898675054, + -0.39294171356060975, + -0.3999263279751446, + -0.2929049797569181, + -0.23957262774701482, + -0.11439496413332884, + -0.7313910919331642, + 0.34835890264805347, + -0.10651908498662765, + 0.30992460730972426, + -0.10247398038888578, + 0.057188603798413506, + 0.23742491801084487, + 0.4324671132868, + -0.6432760591473135, + 0.5689559156039937, + -0.7299615360309006, + -0.5293463773080708, + -0.383827287644283, + 3.489665522491414E-4, + 0.516957787858502, + 0.14148796126078744, + -0.009063128185668012, + -0.2801080099012938, + 0.5552880451926568, + -0.3486704174287214, + 0.37953998244761367, + 0.6494052807114964, + -0.7439552733942555, + -0.07863690782887256, + 0.16620570568227477, + 0.3935820503349995, + 0.1982208804103559, + -0.14284543125901483, + -0.7447127298106225, + -0.7880513108481223, + -0.40131937791308175, + 0.15873892250273747, + -0.4857438431689295, + 0.2876576319319121, + 0.4121606147533744, + -0.3920781541017436, + -0.5945457807926509, + 0.42717551537843346, + 0.6322371473980694, + -0.27275316753436063, + 0.5509716859133528, + 0.5449927723692337, + -0.050933588493111914, + 0.645308431205878, + -0.418956582976123, + 0.2531928346324811, + 0.49849155808046375, + -0.4340275893383228, + 0.3009684225963071, + -0.25253308800558993, + -0.43985606029574004, + -0.5408259360508602, + -0.4750060427147276, + -0.7903517096917075, + -0.03198261219454723, + 0.08857569907460117, + 0.308802508666025, + 0.3133929637651446, + 0.4353320522640872, + 0.20135455811682312, + 0.047843411275943715, + -0.6854477514598053, + -0.3984518866400744, + -0.36442331212813417, + -0.5185880496861195, + -0.19968012684068281, + 0.07183924004273878, + -0.3895919411464669, + 0.5642871030209186, + -0.4019124306404551, + 0.5093978769207953, + 0.0916302343640999, + -0.48946421314627, + 0.2585415941241692, + -0.047499100979036424, + -0.029750136020231688, + -0.5476663542983422, + 0.4719399791059472, + -0.4147116985315758, + 0.5782171929177743, + -0.546240382604052, + 0.5955178155658544, + 0.4410308559096664, + 0.46592353895662975, + -0.45069554713565474, + 0.19471070567428617, + -0.5183478686840133, + -0.7188390628310186, + -0.15195342464696582, + -0.6298603604693966, + -0.7688939405452782, + -0.2915173485761844, + -0.5577916263304943, + -0.6175744263791462, + 0.27397128579012053, + 0.4924147898390224, + -0.11869555141571275, + -0.04181220864604995, + -0.41572041247918246, + 0.03076669603834481, + -0.30374588652093293, + 0.02720429466045926, + -0.2890651654390437, + -0.6630399372375513, + 0.1903540920310366, + -0.7812629436332862, + -0.7822649905071247, + -0.6849970006164158, + -0.3135357135928125, + 0.4563393277156268, + -0.4004889865743224, + 0.5636719053580873, + 0.6537530196494402, + -0.5492597480006722, + -0.6619726697033316, + -0.2252335822451803, + 0.5907788463600038, + -0.49112542766987977, + -0.2801863607542484, + 0.36559388329715403, + -0.5266323698102283, + -0.07018058378673453, + -0.27182573334780213, + -0.16643256966414255, + -0.13708415800309603, + 0.31559580359978134, + 0.6596891202515757, + 0.619596519453841, + -0.14679515409676103, + -0.764209337403673, + -0.32550576779307583, + 0.2687474110458926, + -0.2777576886639723, + -0.33095815460866806, + -0.4346428922586135, + 0.11206970904271707, + -0.2090255854292551, + -0.42820546474587784, + 0.29390161506883816, + -0.16218732954338566, + -0.12534853467959517, + -0.5882519317094842, + -0.42607253038460335, + 0.2235029641304428, + -0.5184130742731572, + 0.27208419075083634, + -0.17165584198054396, + -0.6322211653786036, + -0.4981077274826856, + -0.10104673458277835, + 0.3675069844839952, + -0.4016516961112953, + -0.3750164982178301, + -0.6554929621665988, + -0.7546363775042545, + -0.7136130410212439, + -0.07831221408153943, + 0.5559300732552656, + -0.2829557386707897, + -0.24418079533269044, + -0.1409850613890543, + 0.5470711821585842, + 0.6436844644656717, + 0.6580135041612128, + 0.5002440028407974, + -0.7630850831113428, + 0.556978936157661, + 0.353817864222168, + 0.02672516576528794, + -0.6623180829809002, + 0.13529926568464712, + -0.3572086006744279, + 0.4127613948190979, + 0.020570370447180242, + -0.6081958120019054, + -0.4656640920770424, + 0.6461246289457635, + -0.08747737189099569, + 0.23047141978521812, + -0.7518490070982412, + -0.286634537410683, + 0.3090554291927704, + 0.2350882426864872, + -0.25598615206529607, + -0.05301646381356151, + 0.23478650030344428, + -0.4354055519777422, + -0.6003080996550278, + -0.23817716644177267, + -0.11775131465800626, + 0.6301879733195598, + -0.23153588142628723, + 0.3367124266914231, + -0.6111924607365122, + -0.18050220562096309, + -0.01542466415202104, + -0.0744823392365409, + 0.08522622164916394, + 0.2376234546091628, + -0.24048512519419263, + -0.7679860119852437, + 0.2703714641460412, + 0.19393820523825067, + 0.2625597092641411, + 0.4280754087811728, + -0.1912934127790029, + 0.6393127285126817, + -0.4644076423534642, + 0.1758180133994427, + -0.1860763060823175, + -0.35464362590913917, + -0.21092409565635206, + 0.4191041920417299, + -0.6074006588689003, + -0.2599829011070044, + 0.10912420099069486, + 0.6216754583909107, + -0.5016650972583532, + 0.4227928549771419, + 0.32679911183696764, + -0.1996141929449723, + 0.35369935897509885, + -0.1455519706984415, + 0.3637206971738366, + -0.24094636810461056, + -0.3726057081144976, + 0.3485781946488863, + -0.6275670059032236, + 0.5620946653316868, + -0.49159229914314617, + -0.4148573407128447, + -0.3595730620019554, + 0.14291458973739257, + -0.25715585466744484, + -0.6878002780922624, + 0.5893534153026155, + -0.47169191735563704, + -0.2846069125562628, + -0.633637082416919, + 0.07662608566643403, + -0.43411070100489235, + -0.6784110241803933, + 0.15894308363303766, + -0.7218854329988644, + -0.48601948274227336, + 0.11655189835788882, + 0.48954363933569767, + -0.5373107700023895, + 0.4853454738555273, + 0.03490497294785866, + -0.6075291791689512, + -0.1260415800028054, + -0.3319469984137335, + 0.23371492769525248, + -0.16499548594364344, + 0.239533864108198, + -0.2872662557607891, + 0.38046234538701584, + -0.2233325908470558, + 0.1906072759884383, + -0.7871239564803718, + -0.13914173058763768, + -0.22570032305484755, + 0.2931442227807962, + 0.3010253588536277, + -0.6890201854693413, + 0.15682051252634666, + -0.3479946037385412, + 0.17085972883768286, + 0.3264859915088173, + -0.6485044485329514, + -0.7858537344132347, + -0.7388655358904551, + 0.6077476917066184, + 0.10117113725342974, + 0.11434340205814808, + -0.7854548282150726, + -0.6443796305984508, + -0.14031552356500399, + 0.4756695400906409, + -0.0705528640588362, + 0.40811653443368, + 0.5762618081818648, + -0.42852245512561743, + -0.18329340878919498, + 0.6379434258853015, + -0.02749093837689376, + -0.02379540104800515, + -0.31335467152245977, + -0.6879589278115915, + -0.07673485422854809, + -0.6949854652956844, + -0.3893555924415808, + 0.42356079321468576, + 0.4440714896510348, + -0.4443199261404352, + 0.4234233952647931, + 0.33114911719854845, + -0.4600540579330322, + 0.02860558517294609, + 0.2796804761323791, + -0.7059397207202179, + -0.2737563147239962, + 0.2576916409613613, + -0.24743642330620153, + 0.6071486392222868, + 0.2435020992829341, + 0.5610280991496505, + 0.1893132669980423, + -0.12178776821072534, + -0.21972788330389048, + -0.44695753988633824, + -0.8064603151664288, + 0.05728725295700732, + 0.4028943485739035, + 0.2796162900284759, + 0.35057649981286476, + -0.5255213627942343, + -0.2261135529501317, + 0.22371487455053873, + -0.19475569544865856, + -0.16584193907918143, + 0.2771650238021558, + -0.12269774715043469, + -0.04915023671464336, + -0.47509549908709453, + 0.5228896858049269, + -0.1378655925259591, + 0.563175636446328, + -0.7522526630706278, + 0.38136482484728773, + -0.7273306839576537, + 0.5827074150550297, + 0.044819766781123205, + 0.16258523510226097, + -0.7696344787530705, + -0.26243554223652643, + 0.360926337546689, + -0.09792140134501792, + -0.092442825308379, + 0.43724183512633596, + 0.09642810512636812, + -0.5927631343958448, + 0.15274492743875023, + -0.07662276849171412, + -0.5721389616003646, + 0.5223992328270651, + 0.0019067564662009762, + -0.5789687869420012, + 0.5356488646434449, + -0.06712018302173584, + -0.3520556066917814, + -0.36990876062473255, + -0.7244323133389152, + -0.1891123441229553, + -0.5094561471771903, + -0.16590736284718766, + -0.2167625930367787, + 0.5412584231442662, + -0.08090173166187564, + 0.17757347165216208, + -0.09806152756182662, + -0.13513737670140347, + 0.44292606364551135, + -0.27633725767475403, + -0.18617196137542724, + -0.570862503153996, + -0.17785662270744074, + -0.7703037502213489, + 0.30238613768878186, + 0.6415849572668816, + 0.18467318544569145, + 0.5990753966962027, + -0.3273275024807772, + -0.19604123248761163, + 0.2741097989266198, + 0.24211303774090143, + 0.049297130603915496, + 0.45437900923293395, + 0.4573826949549028, + -0.49742958507101126, + 0.3801428078203247, + 0.09826552006330813, + -0.7704501196863264, + -0.11166334231689912, + 0.5933967340620055, + -0.5462551305209202, + 0.16889599005313005, + 0.17570360768905458, + -0.36126964795316724, + -0.34747723220146237, + -0.3394817970173153, + 0.6073766469475784, + 0.22968702024674925, + -0.4395780286649338, + -0.07212462456782986, + 0.5402941467368366, + -0.7624908223580322, + 0.39766979136391634, + 0.15999426582577947, + 0.11983972386275099, + -0.22108630694916387, + 0.4231679755897456, + 0.2872896558469461, + -0.06642383819322406, + -0.08677695505844307, + 0.46350417581958314, + -0.7196306608569235, + 0.42935179771109755, + 0.6049965593181464, + -0.44957348592751384, + -0.2484432317600801, + -0.3512952024773546, + -0.6825886042887461, + 0.4071291465025558, + -0.545672796328168, + -0.5680431312560414, + -0.44555487050354026, + 0.47228841008354305, + 0.6059911647753998, + 0.16420697509475224, + -0.5461019282953853, + 0.1297984458311, + 0.5808747480484676, + 0.1137791782915224, + -0.296272873689541, + 0.24282017893593488, + -0.6730165268592578, + 0.6464773245119052, + -0.31619703330826493, + 0.2450766280294615, + -0.7777458680517833, + 0.03961599836688323, + -0.1770662877315461, + 0.6145328979664356, + -0.449125535171929, + 0.36378818177757, + 0.24039927199043076, + 0.6169378945826302, + -0.781395561637449, + -0.6142049208262468, + 0.07097620911475244, + 0.6537511801740478, + 0.333003622295862, + 0.4519810826660501, + -0.11455067723074286, + -0.5053209311394454, + -0.49304830490581397, + 0.535846565883804, + 0.4397245178236947, + 0.44059713975319326, + 0.052279721937768975, + -0.634707360002556, + -0.1443458933273526, + 0.6346799048029296, + -0.06533188075625873, + -0.30979545402568454, + -0.6244116566913303, + -0.024754734042513382, + 0.29281604385140414, + -0.6451111916765311, + 0.2875766003760979, + -0.5104080551860407, + -0.3281396142235741, + -0.37868471828251976, + 0.37081648873268225, + 0.2835418996544451, + -0.14939616173946957, + 0.10546274656058285, + -0.48364817236386154, + -0.4196054876214065, + 0.0293988332279691, + -0.11543621737646304, + -0.7475646204790569, + -0.7511667499186858, + -0.318495003333628, + -0.8016621824994196, + 0.3375777318907457, + -0.5364223052918953, + -0.38365719575218266, + 0.2631355403529222, + 0.5372542676634199, + 0.5261117037103816, + 0.4653481646757104, + -0.18680290022396784, + 0.4568373352300449, + -0.4143152441097675, + 0.6438272464534994, + -0.13661126636236487, + -0.08464392990897662, + -0.03216950958757803, + -0.3042558036135974, + 0.4211530243448952, + 0.3379714917077995, + -0.07367891869576537, + 0.10039182455413109, + 0.3974773281120446, + 0.5500282614447235, + -0.596622665386803, + 0.13310147059192234, + -0.6086933932011803, + -0.20920315330673533, + -0.46934041885712086, + 0.16244317660759489, + -0.2029108943910457, + 0.21433396206473765, + 0.4863860787626876, + 0.3250154889520781, + -0.5933746237693704, + -0.578064790732985, + -0.34189357760148126, + 0.4421256596517803, + 0.2360456362758815, + -0.30773133383169726, + 0.4313488070831427, + -0.0016402123638065147, + -0.6571033238799849, + -0.7589012613111812, + 0.14054915801696266, + -0.08757795976026062, + -0.019185667658988215, + 0.634721331820317, + -0.49116569021684126, + -0.7040652227414508, + -0.0489424268708929, + -0.5789846546165274, + -0.1425677091686608, + 0.6136968953571144, + -0.3494330071843723, + -0.2195093229961359, + 0.48275037843376734, + 0.37156005586409824, + -0.22863830746366964, + 0.5964108816171153, + -0.4607388529774117, + -0.48499653748263094, + -0.8017075432677383, + 0.2966856836359367, + 0.058116785693066886, + 0.13433744504734701, + 0.02226400571851206, + -0.39613208417553836, + 0.4742075224901351, + -0.6112670450985994, + -0.7626065650971836, + 0.3278300694460864, + -0.13038136043338178, + 0.6521956687461711, + -0.21365890716594715, + 0.5747807515695461, + -0.3384323873619546, + 0.3648272881807363, + 0.6318123155213166, + 0.5613255532331421, + -0.3701324993776148, + 0.19409522759312126, + -0.4455925285845459, + -0.5571246177896548, + 0.05181441074166171, + 0.5155372758219577, + 0.4104349797786152, + -0.46882920936735095, + -0.6545250163796552, + 0.06498660870328721, + 0.24264301616695383, + 0.5328406564966975, + -0.7355354477216262, + -0.7681824172028661, + -0.7982291251330176, + -0.06342191571336875, + -0.4381879972285131, + -5.272625313497148E-4, + -0.30533426538828834, + -0.07378563522302506, + -0.39699563037248325, + -0.034097128659171916, + -0.2215182151020566, + 0.5768930630857559, + -0.5843288173416714, + -0.5833044054930693, + 0.40360710343861605, + 0.056404482267563005, + 0.3870290746529458, + -0.6861243101828669, + 0.30512318675951466, + -0.3475268766231037, + 0.5794820261330934, + -0.6155475107807433, + 0.25020634785822515, + -0.6444696596064226, + 0.6159324285134659, + -0.6884420329673873, + 0.09559588737370217, + -0.5313132531462079, + -0.38332532009648485, + 0.3749571557878696, + 0.02568804505786204, + -0.14640083932890635, + -0.4780625455292372, + -0.7070885396376353, + 0.4791134544816712, + 0.015949364901207352, + 0.20967007662169157, + -0.7590266016101285, + -0.1591275503509978, + -0.3158703329214981, + -0.6731047020211391, + -0.14054689217485028, + 0.29263052736897877, + -0.3215116156847501, + 0.28475192488678525, + -0.5599808874599957, + -0.24813205668991667, + 0.27189667374479065, + -0.2569671131194081, + -0.09213695902544483, + 0.36367076762343087, + -0.17901633871624645, + -0.21853454769413472, + 0.2595050664716657, + 0.26522313331107916, + -0.093377667663335, + 0.057221768595800526, + -0.13901416070995143, + -0.38329987293830287, + -0.012465297825170918, + -0.6406562072094033, + -0.49344497478270777, + 0.2869683730275131, + -0.41867972621649174, + 0.5419417588109406, + -0.6483451109509896, + -0.6862404895199602, + 0.4565252357463444, + -0.6545613870992832, + -0.26308578410287453, + 0.3704839585984364, + 0.4431817142679576, + -0.6172004709239187, + 0.2780370501088473, + 0.31443643364382823, + -0.42209294610184744, + 0.49560479553240133, + -0.5183611884111812, + 0.0023808131709461833, + -0.10436803028282515, + -0.045533098275795325, + -0.48071324970256163, + -0.4922546949580315, + 0.23480234631120644, + -0.04848762756220226, + -0.07030344722801507, + -0.43476686446329216, + -0.016199562513141808, + 0.3833363297097424, + -0.6518076799416495, + -0.30871813598890857, + 0.5216244647390237, + -0.4282469525352093, + -0.6678094455052496, + -0.07728568144431014, + 0.345665486517856, + 0.2772049120326995, + 0.15576754526738845, + 0.0511798582777413, + -0.5058335717877028, + -0.6822047174007755, + 0.3255908683627343, + 0.19924081543637218, + 0.23260674575435802, + 0.4811201982923229, + -0.056973828712170715, + 0.3406215530835689, + -0.676729811500705, + -0.2768335961641082, + 0.3325643908822372, + 0.21530266766483852, + -0.09011565036275238, + -0.7063724359938347, + -0.2027720106024049, + -0.623620886518921, + 0.5834634460769083, + 0.14143399568676174, + 0.4945936100199312, + 0.0501524735243396, + 0.021529238773225434, + -0.041372277565856486, + 0.5853402051660138, + 0.5761426586185848, + 0.6252701852997756, + -0.5880868365950865, + -0.13925682358673463, + 0.25560765173495625, + -0.26119059778539466, + -0.5658422220723247, + 0.609048855864245, + -0.4957162445001212, + -0.38114776804000244, + 0.23702890674592958, + -0.6594288849844457, + 0.16082993939742074, + 0.05566383497783367, + 0.48262893216899594, + 0.45189243724651906, + -0.60944921611214, + -0.7752842969302915, + -0.6847529648643074, + 0.20434592754305048, + -0.4937260318470665, + 0.596728031076282, + -0.6105003765397399, + 0.16975566041068435, + -0.6323735441107764, + 0.11756082531925194, + -0.7462904901081653, + -0.4518105377564559, + -0.40696039150263014, + -0.3307722484180976, + -0.6065958533633384, + -0.21813186781950356, + -0.33398845673977584, + 0.5277638487004573, + -0.6030107287619146, + 0.17280402722846067, + -0.4521507405071168, + -0.5099931664646269, + -0.19307443802129476, + -0.5243799546894112, + -0.4187456937192324, + -0.6194080319174582, + -0.322824759046483, + 0.2771586788198618, + -0.6303536602647715, + -0.4298484775890825, + -0.7219335601815913, + -0.6651223232544611, + 0.6133846714205097, + -0.09269218600062812, + -0.7392215434593755, + 0.6072267318275181, + -0.24286649089037904, + -0.1049192663816022, + -0.41425577614283937, + 0.03624549561821255, + -0.5150366577041476, + -0.8070911843798446, + 0.5190995386251186, + 0.14773420129321269, + -0.28782228215676153, + 0.10396336731144828, + 0.1298663222133326, + 0.5853986759543989, + 0.5953639111868446, + -0.5513989609166443, + 0.4346632155622775, + 0.608915740227672, + -0.4691819688031788, + -0.05602665345554925, + 0.5951797490508718, + 0.05685020050989609, + -0.5469444393609125, + 0.12077653557428025, + -0.6314330603734797, + 0.4483899579653793, + 0.4387845078550424, + 0.5271092276734118, + -0.10219755361254779, + -0.143638150698563, + -0.14239372962172991, + -0.03232142427234008, + 0.21019537030684698, + -0.028806097937831066, + 0.32616260030100064, + 0.23115972990779532, + -0.315948816880258, + -0.115932807735879, + 0.2995663439746251, + 0.15674555963421122, + -0.512957411558172, + -0.2717971328736547, + -0.4745564527230994, + -0.6856466361751951, + 0.37403322487196033, + -0.4296776008699785, + 0.4455887447942869, + 0.5048987989512502, + 0.08498991119648514, + 0.08584012458346502, + 0.47834273292275487, + -0.40999732286413315, + -0.792447952327955, + -0.47520155567678324, + 0.2081451697025981, + -0.6472726248681079, + -0.6128105997738749, + -0.5671782477305843, + -0.6446327280904556, + 0.06682402455456249, + 0.6302591736191318, + 0.282092536091222, + -0.031580986621976725, + -0.5746314026128488, + 0.6119149564504737, + -0.2869270848606452, + -0.668492453743506, + -0.6601455349338472, + -0.6464660350838245, + -0.4520010596007811, + -0.573106066276517, + 0.4857625243030156, + 0.05956373927150138, + 0.3781572748164307, + 0.3919901974740242, + -0.2275530352398395, + 0.42519732373464303, + -0.3873066689152844, + -0.7320771963699112, + -0.06677737651152338, + -0.17030890683705147, + 0.29448471557298983, + -0.33272967434488976, + 0.4133553307311021, + -0.4258643505203045, + 0.03210822392984192, + -0.09081941365703117, + 0.5984825611983261, + -0.7668820805711029, + -0.2899689717920123, + -0.5956888675090151, + -0.4279052625975341, + -0.4952561306227633, + -0.619302503806852, + -0.7385574838983169, + -0.07473083948237325, + 0.43452870456133763, + 0.04860711378863192, + -0.7624636067130346, + 0.30352174015914624, + -0.5339353571106717, + 0.43505481260632484, + 0.32698507417043465, + -0.7268992149282426, + -0.5242656875297184, + 0.14800312511918634, + -0.5351806584432186, + 0.3347953872228161, + -0.41844778275401223, + -0.37955363254770047, + -0.679003287962176, + -0.3453811328595643, + 0.5126419371326779, + 0.04511666488626753, + 0.4346988899758363, + 0.1655669266268246, + 0.19944916634229315, + 0.34348302154700716, + -0.21901764452563044, + -0.4887796393213108, + 0.23498111657162657, + 0.3306344462217091, + -0.6763107091849968, + -0.6086036281531151, + 0.41645480746620656, + -0.6037531494613447, + -0.5016795952916151, + -0.7114435583517897, + 0.0039029227556299784, + -0.6610389965731106, + 0.31898743203290547, + -0.4360761194202551, + 0.5054925907668527, + 0.5848668320321432, + -0.20901692062678223, + 0.43418658735813154, + -0.2661398539867388, + -0.19023581594677974, + -0.1934074285025258, + -0.762723771432059, + -0.36825853606798964, + -0.3030405016440584, + 0.003968715611836204, + 0.3883586101290296, + 0.5640589408801572, + -0.5120880707666506, + -0.16183266822436382, + -0.6338942543330447, + -0.2072870880344293, + -0.3524479853393393, + 0.484822117782601, + -0.3970098308999166, + 0.020752064934937753, + -0.3736522570166894, + 0.02930200381700132, + -0.3147255089057666, + -0.13669469518065647, + -0.5781865353601949, + 0.4087052780526229, + -0.25959360759667827, + -0.31659678523105356, + -0.60032284404651, + 0.14849942062086652, + -0.6266805723031441, + 0.16840757648853577, + -0.6273303060076625, + -0.28488635158147557, + -0.3796920132742986, + -0.04613094327358158, + 0.5382994707243137, + 0.06905534735142649, + -0.2687204202723782, + -0.10311761436861244, + -0.31749482031910325, + 0.6398296384564169, + 0.40240632203183513, + -0.3881364840356789, + -0.7774645411219975, + 0.34507775392083107, + 0.29656457427487426, + -0.5973186062634928, + -0.0412182115630656, + -0.107951048350442, + 0.039410135601002705, + -0.012240815672958982, + 0.5333989776964768, + 0.1298217844124434, + -0.5888977748315523, + -0.25483125870080425, + -0.028485444654692382, + -0.3191099168435438, + 0.09718794214135573, + -0.21096294107412417, + -0.647683201670155, + -0.6579614361627779, + 0.2829082989230708, + 0.24885164602317078, + -0.16469472437445332, + -0.3156682734456504, + 0.46250431774352274, + -0.7085646116577633, + -0.6950180317172051, + -0.7693507266969231, + 0.11016080816441898, + -0.1972053332508289, + -0.2161965782469797, + -0.29117193937109953, + 0.6216812979916772, + 0.40973701227331605, + 0.2782552613114849, + 0.5927959709505118, + 0.27503606345874065, + 0.44465122912774746, + -0.3743275428753325, + -0.31468146011025677, + -0.48043302616873895, + -0.7425247654689627, + -0.5534281505923841, + 0.36601181998397225, + -0.10412380161243073, + 0.2905617019241419, + 0.3047484585932211, + 0.08837085717999393, + -0.605313212990369, + 0.42203424470294293, + -0.20429451003118315, + -0.7275610629195189, + -0.7944612732531514, + -0.29239373986328887, + -0.748449153158661, + 0.546272941581187, + -0.47026076221878665, + -0.07660560619747525, + -0.6339759770288204, + 0.22121008137763376, + 0.03928320465202373, + -0.4107224778714827, + 0.04351068611655329, + -0.7603534019036664, + -0.7374780282706126, + 0.5310042995538601, + -0.3758874595963632, + -0.22311856006401076, + -0.7672487697500769, + -0.6697381637904478, + -0.1469397896014164, + 0.5420590473307189, + -0.5413885446221547, + -0.742169218248693, + 0.43065483476653166, + 0.5511332678177859, + 0.45487970337394634, + -0.34169131928725316, + -0.1859718856227609, + -0.04971032885536708, + -0.4281993154846105, + 0.3834553766966421, + 0.28242232167914694, + -0.0337804846145332, + -0.23196841620957098, + -0.028358399376327226, + -0.027097115484516543, + -0.6094825635049942, + -0.15196766848849563, + 0.15707099629933685, + -0.2565469012646985, + -0.11810186729672756, + 0.05447345926195335, + 0.2746442035465849, + 0.5608738051120691, + -0.45142475265961984, + 0.2295535077052998, + 0.24900500204974196, + 0.1467952178859544, + 0.6498502226634119, + -0.14300302530508435, + -0.7654151041508478, + 0.2743391745192961, + 0.2178083249385897, + 0.5491273525460366, + 0.34334317721243235, + -0.7167876755209538, + 0.3440888016140712, + -0.2974660711926914, + -0.22077303044508234, + -0.5277998032904742, + 0.22888274626060368, + -0.5458846217065381, + 0.6370391965954857, + 0.3790686765825807, + 0.57724423322412, + -0.2447717231670904, + 0.1858436182229689, + 0.12697321479313295, + -0.11768249485803561, + -0.11266894139676598, + 0.22561742185499856, + -0.6448119069192132, + 0.3436835947140636, + 0.4943823049492039, + -0.7665629368681861, + -0.5029804019552119, + 0.008711093411475246, + -0.0479685700603244, + 0.45255336193700557, + -0.3501215660841333, + 0.3991082298920533, + -0.15157655200398712, + 0.04707049862470469, + 0.5012275342302687, + 0.10706858579257417, + -0.07249089963755861, + 0.16373543503095633, + -0.5882944641927912, + 0.024037723608245187, + -0.1261621880116246, + -0.32171984335963044, + 0.246571397936994, + -0.4415830983599709, + 0.07697929202916376, + -0.07860111654403013, + -0.48886714651232444, + -0.1737993300524462, + -0.5556418832153437, + 0.647776286857893, + 0.16632375663207832, + -0.2676923704002856, + 0.6453529950293045, + 0.4551605519279275, + 0.2113918423128195, + -0.673973591580999, + -0.5379237042483886, + 0.08676068423223926, + 0.4139066546066713, + 0.2514792189300593, + 0.10123361031153222, + -0.4721169636719314, + -0.1468048339054434, + 0.49869157254092855, + 0.5877157621181904, + -0.14774751433610755, + -0.6640190074254753, + -0.2506502152088541, + -0.42191534706553646, + -0.40371133177043045, + 0.6013112273890479, + 0.10426532446703674, + 0.22579981941130767, + 0.5016580524685265, + -0.24795980229542813, + -0.005977835543889309, + 0.3113330400407285, + 0.35165445678094487, + 0.3515650629587016, + 0.44340441237494577, + 0.050093060672196765, + -0.09818652675905681, + 0.3030494073987783, + -0.6807954715349905, + 0.06690045398285793, + -0.37766201984360803, + -0.6863013032805624, + -0.6514466724916301, + 0.3709729115298087, + 0.15787128253206828, + -0.5030464571476853, + -0.7601886469916431, + 0.14376087668348358, + 0.6306257743874807, + -0.3562024403309582, + -0.38121657164963374, + -0.0183492046883591, + -0.16460649133133365, + 0.015025465877131716, + -0.5123649087497062, + 0.30078585060723906, + 0.6496904191167124, + -0.5662028698215551, + 0.6457175300195374, + 0.2476397294969731, + -0.6307359464085665, + -0.5272296275132147, + -0.12328512583711526, + 0.5587779146260291, + -0.07967391651250699, + -0.29249921818412017, + 0.3205876439103922, + -0.5644203778438951, + -0.49382071767377994, + 0.022956251597104793, + 0.32654839139800484, + 0.5408860603386946, + 0.5234423362131476, + -0.02712094011333821, + 0.10062190364218848, + -0.41221396262898535, + 0.09904548999362761, + 0.6025827814641606, + -0.7297645803906876, + 0.5593764264199127, + -0.3474269905775726, + 0.44591057206134976, + 0.42602825496596364, + -0.1909707757312371, + -0.7148965181371334, + -0.48906350088061706, + 0.601271695024466, + -0.5111225557969638, + 0.35716036122721906, + 0.10644864765674189, + -0.8032058708053311, + 0.06702750734968443, + -0.23125043497684616, + -0.15017276148042868, + 0.06442248850282062, + -0.7075847346280602, + 0.33269004503020694, + 0.339108300714411, + 0.2161778758410916, + -0.05413400078178521, + -0.2741139173037964, + -0.7011880537946511, + -0.4778764733408317, + 0.15304191809559908, + 0.41371327962957183, + -0.7124865663188619, + -0.2518711444293955, + 0.43305767485845104, + 0.5771631533239184, + 0.3577008394749591, + -0.291903866969317, + 0.4218581225251298, + -0.0962650255599461, + -0.518143520520864, + 0.4399664086784544, + -0.374397390307636, + 0.30016804407348474, + -0.5111204705002461, + -0.5626306015255638, + -0.40348674418964237, + -0.223821173544956, + -0.16963600954680824, + -0.5438125252967427, + -0.4753517796390723, + -0.06910232549649953, + -0.1145449430402804, + -0.5506161596363226, + -0.3039554490097834, + -0.40378557598198184, + -0.6290579749492854, + -0.5807152599423446, + -0.5505668064018169, + 0.3834717726658713, + 0.029268204286494903, + -0.45966207246766555, + -0.31892773052870993, + -0.6139309379053899, + -0.666569902745708, + -0.06565991624352163, + 0.35705400897881046, + -0.618698362876988, + 0.2716441084840091, + 0.05480684802912983, + -0.6657435313564841, + -0.2952374718040744, + -0.5060481169272675, + -0.3414777446430581, + -0.29974765757487015, + -0.16966158703325518, + 0.23565597195568755, + -0.2005022737239862, + 0.029680072301348837, + 0.2908088729930346, + 0.044178490494024, + -0.6726256432684271, + 0.05766925167276915, + -0.251385387895399, + -0.21729828280827213, + -0.4804664633445809, + -0.25043569174990354, + -0.6919538012367027, + -0.43502103056063673, + 0.042440220699433984, + 0.16051055851646834, + -0.39237330553887356, + 0.10277100368740921, + 0.21509258541986986, + -0.5533277381111515, + 0.34824907165000896, + -0.3814249341776159, + 0.1412711076683384, + 0.3281097018336786, + 0.3067964267741795, + 0.20534788741403787, + -0.3447668059533813, + 0.23263116101853953, + 0.37542598488534284, + 0.25418025092967156, + -0.642095673497124, + 0.035565617869265265, + -0.11346643238792387, + 0.11090693428614717, + -0.6613912402971032, + -0.5749488880849057, + -0.4306470379061576, + -0.3757723419157717, + 0.05736158248391454, + -0.439806600594245, + -0.3049183462328256, + -0.4904022416915156, + 0.20704926974133753, + -0.6465599697057662, + 0.27123421441646633, + 0.07084942615641288, + -0.6382760663098755, + -0.4481811720420933, + -0.23044260437928105, + 0.3684200272020254, + -0.5662668152148167, + 0.24229677641926195, + -0.04863244434405012, + -0.5499417255226874, + -0.23224166614775343, + 0.16741851866590696, + -0.4769992585124413, + -0.6224671752377127, + -0.18812777092812982, + -0.6036168904277424, + -0.03931149112681398, + -0.5254030734139754, + -0.6672997591010223, + 0.41321153991367987, + -0.005585796812877519, + -0.4136515863614821, + -0.37888255205989224, + 0.1014372353825359, + 0.20520132504199506, + -0.013413085950512493, + -0.4006882127194604, + 0.18615761660364072, + -0.6727597463122881, + 0.11656905601923628, + -0.4886959759963456, + -0.10610191621435261, + -0.40420730635548385, + -0.5160927978279055, + -0.06540679603364297, + -0.4110517707252036, + -0.28492786250037905, + -0.09457661726323885, + 0.3332530547345768, + -0.3383556132952519, + 0.19468922135483324, + 0.2223431441743473, + 0.19546985507657988, + 0.3555363483552726, + 0.2622857204145772, + 0.1798476048803962, + -0.16331570807324847, + -0.6478386290893837, + -0.027594486640711957, + 0.38538932210508603, + -0.22453265876981476, + -0.09226571876123135, + -0.3841473447950011, + 0.2970788573608131, + 0.23579526322140254, + -0.17860865529242165, + -0.39078322378149183, + 0.29938149771589473, + -0.3403933503362614, + -0.37852903740052934, + -0.5836920650869215, + -0.6567882797633647, + -0.25731901221583187, + -0.0012916094791276533, + 0.20814548653413478, + -0.20628477344858764, + -0.24939152133392622, + -0.49627313705192105, + 0.13443812965591895, + -0.6323538010998289, + -0.21922052785472068, + -0.02249139560661606, + -0.07576364218686715, + 0.4094653832962841, + 0.336397703467575, + -0.6610317782942796, + -0.14889564902459496, + -0.2769473685295554, + 0.10409964234818003, + -0.06219458610872475, + -0.055895037435023553, + 0.3737402477085784, + -0.46430882545638075, + 0.22708495851983623, + 0.2921671359473401, + -0.042148762635346726, + -0.3321680855699135, + -0.3860133228193005, + -0.5370515785653112, + -0.6277705196046994, + -0.2927603007455466, + -0.4114394166962111, + -0.4337082441173345, + -0.13558711105632137, + 0.09217756461797055, + -0.0950466450021783, + -0.002182789634796789, + -0.2234269431860733, + 0.01736383379582418, + -0.4646867154685256, + -0.388425179439042, + 0.12574231349321852, + 0.022295169435080475, + -0.07997019502023439, + 0.15926975458250403, + 0.292711961206785, + -0.2526378311254434, + -0.08045092825779987, + 0.1718130022996912, + 0.08271041292729309, + -0.09673521417013431, + 0.2167472354777923, + -0.19778955101521323, + -0.12721835476808396, + 0.11757664012746627, + -0.3984646336103083, + -0.5496214393630088, + -0.2951393269872798, + 0.22269211728602367, + -0.03509818071039705, + -0.06269111552416295, + 0.14634102272478622, + 0.15992940265491562, + -0.646841186494364, + -0.2763709688846644, + -0.35052326903622233, + -0.260787061985676, + 0.18612069235327688, + 0.029585020246474247, + -0.17884297058838938, + -0.5132112127615365, + -0.07914600830001128, + 0.0076629576582506465, + -0.10497822777551391, + 0.08710321078486338, + 0.4173903825464337, + -0.4814516881347422, + -0.6365935641408897, + -0.04617617131637186, + 0.24933416103397477, + 0.1606586308247292, + 0.2527357847609881, + -0.15706920845935568, + -0.5275658817496144, + -0.625548989952024, + -0.008016867789646165, + 0.18427496596531578, + -0.5916608046290007, + 0.23993382506136007, + 0.32130367616131894, + -0.16020912647057584, + 0.17662660988557277, + -0.47567843634708484, + -0.3503657898365279, + 0.014914948883923418, + -0.12235397446958951, + 0.14208177906304065, + -0.05674607963657663, + 0.28201942750736375, + -0.37338547976538405, + 0.22314850587914126, + 0.2747114755951531, + 0.04481150149242019, + -0.10563529919637049, + -0.2681215128010285, + 0.21787550242907927, + -0.3509915294478531, + -0.13649507043478393, + -0.5587717694887512, + 0.2763855947476954, + -0.4007800042337766, + -0.23543519456979395, + -0.5011066355440068, + 0.26022809399301394, + -0.18963398423719802, + -0.12644011275917533, + -0.36914893342271454, + 0.40093350125505844, + -0.29649927856577984, + -0.27688781332362167, + -0.15620291766391525, + 0.04701558224050917, + 0.30340718264129596, + -0.2752776190591912, + 0.25280333671145694, + 0.2559549533357536, + 0.409002237322451, + -0.6152159757557758, + 0.1856505110838309, + -0.4268967884293784, + -0.14450469980951142, + -0.6941384479326512, + -0.019228784404156207, + -0.08137175726355672, + -0.5411243893238227, + 0.3203701408492142, + -0.028830634665453214, + -0.5001174022308519, + -0.30859323360863145, + -0.6755145802801938, + 0.25885176861158266, + -0.5891384615178488, + 0.11296705206672719, + 0.27228981016807974, + -0.6525127882433751, + -0.22696065226686102, + -0.181236424760989, + -0.2310628061996532, + -0.31543300170471383, + -0.5701553061237721, + -0.014178505606606495, + 0.001155768345724395, + -0.5711421314493408, + 0.17974419534309205, + -0.33451848837421244, + -0.3276752425845533, + -0.38128087119923304, + -0.6892478856563202, + -0.050684128238436044, + 0.2966048556869859, + 0.10970697071688651, + -0.4935981307248603, + -0.5220905404129272, + -0.15170399365589904, + 0.30385954656537295, + -0.08533327816617742, + -0.2721570397087962, + -0.5245926629820674, + 0.32499539894253393, + -0.44656508817109203, + -0.13399330782628127, + -0.17059184153621976, + 0.27243045807446364, + -0.20725761967198525, + -0.3024410520985826, + -0.4247117480090414, + -0.6381475935813584, + 0.20270053188453574, + 0.18299559121234277, + 0.04603998637176021, + -0.149731131583415, + -0.3991008356766455, + -0.09022204463800032, + 0.18976100006980912, + -0.18865262583769304, + 0.32025224590364154, + -0.3584889922228311, + -0.552981536109948, + -0.1830350647426907, + -0.42158660472133047, + 0.35406140726022717, + -0.3909155412360777, + 0.24235892173949525, + -0.3728619672490177, + 0.4111817863607262, + -0.5963127777439667, + -0.5269330133385521, + -0.03978572661409707, + -0.05413235723266885, + -0.3001982290254207, + 0.08528173224862057, + 0.1784611170796826, + 0.2215281001430489, + -0.43383579828328905, + -0.3947057168675825, + 0.3205480945068936, + 0.18096076278611473, + 0.33674197617467583, + -0.6538639610125849, + 0.2555663612328506, + 0.22565241379147272, + 0.0034667840759738944, + -0.1035309728764483, + -0.3754329461472683, + -0.4000746197479919, + -0.10116160354158299, + -0.18663637341992934, + 0.21516130715433135, + -0.254781841913168, + -0.5461833968746896, + -0.39040796146212653, + 0.021333449284632766, + -0.5770171539804299, + 0.01800577651693558, + 0.1635289936194032, + 0.415847181265916, + -0.4499067811267845, + -0.08772556686261135, + -0.04369279384223046, + -0.46121525476259556, + -0.1677592307894764, + -0.5919852893994225, + 0.39410637185330344, + 0.34542013067221544, + 0.3872214505591448, + -0.5120363217786197, + -0.4053172604026467, + -0.015349217091888079, + 0.003675820578928679, + 0.1810804533042647, + -0.07549794968786772, + 0.2435374463579587, + -0.3745443719104992, + 0.06984378416148762, + -0.0015356896453651014, + -0.631660152986536, + 0.09605047472892436, + -0.6523036618086911, + 0.0426558447049773, + -0.43198138602386865, + 0.3716128440681109, + 0.17596158309346843, + -0.43689795302522394, + 0.3780807766232722, + 0.15873650986532506, + -0.043617332620686455, + -0.11497066137413481, + 0.34275342187526514, + -0.4088639038009484, + -0.6480619156724277, + 0.25200336883048235, + 0.40496367459814875, + 0.3648887796832586, + -0.2630956390782151, + -0.2274200824337197, + 0.40300881319831794, + -0.13356562020093454, + 0.047905130376741045, + 0.3116538017188618, + -0.28405382557359105, + -0.2811804028617168, + -0.5278756566811791, + -0.49884206486601756, + 0.0200976790142261, + -0.22754874957043142, + -0.5726170571391738, + -0.5749138868639903, + 0.3653630964026572, + 0.26869731847248013, + -0.4204239958735741, + 0.10852002720658849, + -0.2539498022615469, + -0.5313364466785181, + -0.5879240876578267, + 0.2413362489807428, + 0.34387933929551895, + -0.6416572376762248, + -0.29341441394664225, + 0.07643589036838816, + -0.24039281732871365, + -0.21457119645037037, + -0.23458493837441952, + 0.29741761627041086, + 0.15547055154332545, + -0.47581606763544837, + 0.06927747479891988, + 0.1349853007253049, + 0.25836167847295033, + 0.20392263992088433, + 0.18988538936029398, + -0.1676230554474475, + -0.4502612111439514, + -0.5203744946699702, + 0.05965752299413518, + 0.37993586571213156, + 0.19677720999474568, + 0.1676932789182246, + 0.31888618768671784, + -0.02490643280755822, + 0.013766861093771565, + -0.028235705724191096, + 0.2838190305307855, + 0.14364340460929093, + -0.319731907583926, + -0.5457938527988482, + 0.022085683847610338, + -0.6759813492699921, + 0.4105152928188688, + 0.14358453295928253, + -0.009021595291106133, + -0.24917207201982622, + 0.11741804833801761, + -0.1182690070939948, + 0.07232743590071222, + 0.30280732731363746, + -0.6767976190059999, + -0.285807480702757, + -0.24535308798818567, + -0.19738134126689555, + 0.2634629839377549, + 0.06699581715084679, + -0.14386887812639515, + -0.2889742608026554, + 0.07046467474724505, + 0.248633227660087, + -0.026332131863720742, + 0.12094492479570074, + 0.23178170157388034, + -0.1699126976213733, + 0.06124239354639349, + -0.2267593331263329, + 0.0059078260855230935, + 0.21315737984056016, + -0.4471901574608582, + -0.19475160191459773, + -0.11831462192828501, + -0.22694553271542722, + -0.18534607383750934, + -0.6227495087712561, + -0.08738510962850266, + -0.14411269437231045, + -0.26657729086411475, + -0.36056601854627757, + 0.2858552718269344, + -0.4548404207867271, + -0.49480210116705425, + 0.33865195255253877, + -0.09113899542446957, + -0.12406632041227483, + -0.41430378834292275, + -0.09405261258956399, + 0.12171112419441066, + -0.5008336833338466, + 0.3939547905689672, + -0.5791517016952769, + 0.1120451565870314, + -0.0894229401345058, + -0.11399096343428472, + -0.1873463444075124, + -0.568826419299696, + -0.14530702488093172, + -0.38105367362362386, + -0.6996480830089274, + 0.4080425170377012, + -0.16608630683151893, + -0.5935446767100168, + -0.34049159638560916, + -0.44861492544816967, + -0.38425665097597805, + -0.4032192043461111, + -0.34523530247571743, + -0.4633456355860357, + 0.011489064467307686, + -0.0483356330073621, + -0.3094615462265505, + -0.13330689258801065, + -0.29559247689806406, + 0.29930621243554467, + -0.6363892977767205, + -0.440714315160433, + 0.39737327452523197, + 0.045783915018637655, + -0.020246350671528135, + 0.04028378136124289, + -0.316915104928069, + -0.37330480396736415, + 0.22430035614856214, + 0.18037131798444594, + -0.47864684193035434, + 0.3615981144806458, + 0.2130987603983442, + -0.08501087548508812, + -0.5403420131770174, + -0.5558499084520211, + -0.17173899376849833, + 0.22030841355945807, + 0.19957320807416912, + 0.19830016044889243, + -0.13906214919069737, + -0.5240253051159565, + -0.1094456386453716, + -0.10651080663313328, + -0.39812586802039546, + -0.6201083457409536, + -0.5401323989393012, + -0.4728360266352003, + -0.554017149010236, + -0.43216121922306994, + 0.12418729109324844, + -0.3402771946486799, + -0.20663778465383853, + -0.2604532370476781, + -0.13182524441070542, + -0.0399103864687812, + -0.1450267016587935, + 0.37378047808778414, + -0.3180168593554131, + 0.07905937898730575, + -0.48728968229779157, + -0.291267809916213, + 0.04893033148406911, + 0.026730612751951544, + -0.5509842369195045, + 0.05656212172082409, + 0.1648277193790536, + -0.6779935323912081, + -0.5408658055851551, + -0.36874584505842234, + -0.4670607344756499, + 0.05542097769210552, + -0.508484244283818, + -0.61977212214342, + -0.6549574958172303, + 0.34263331045164647, + -0.3831262390985364, + 0.04642080957526362, + -0.041184601795792974, + 0.40910521044993253, + -0.053209179150995434, + -0.1553290542643767, + -0.6227418387239141, + 0.2998434881838251, + -0.24994471191757106, + 0.0753639974678526, + -0.21721264175934812, + 0.0955446886577278, + 0.04630966206606679, + 0.3759992123060826, + -0.26109297667232223, + 0.2341393048076047, + -0.6457748124277681, + 0.4106949642528842, + -0.45434409928814834, + 0.01020715484166912, + -0.02245402256726936, + -0.04255656884314196, + -0.08105628241003526, + -0.5618229216573506, + -0.024617252535697576, + 0.1330892943147165, + -0.5637643226415225, + 0.23901106862442323, + 0.32147659174856635, + -0.4736307656403226, + -0.05896469357615597, + 0.12308500006122958, + -0.025874633945002, + -0.5935126580016412, + -0.2459112357374209, + 0.18541026322916276, + 0.19325340085531673, + -0.003777159934338803, + -0.07483984151224632, + -0.23595494809419038, + 0.24698409919385478, + 0.05751624671752542, + 0.37647196562920093, + -0.42540940778898667, + 0.09782289637624109, + -0.6911496814416684, + 0.13338215264500863, + 0.3897809538867464, + 0.35650377094651187, + -0.3114215293170992, + -0.25858836380894334, + -0.6211980999499416, + -0.5470792363604027, + -0.5888090557320296, + -0.21757415381812673, + 0.2001826695627852, + -0.3224972560538308, + -0.27211782069750273, + 0.119997246738905, + 0.11352255039942938, + -0.3642672674837499, + -0.3308233891672396, + -0.2054931896479329, + -0.2602147617611129, + -0.10352048346467912, + -0.45806781543636266, + 0.32033846919089004, + -0.07952911615730507, + 0.05587706903849665, + 0.3454867718532887, + -0.021610920520112264, + -0.3101199761257383, + 0.27383199431548644, + 0.21336618149615538, + 0.024872757020712233, + 0.3759184451533727, + -0.18045592205043115, + -0.07044529297506186, + 0.25107676631456777, + 0.18612335243600953, + 0.20614964796892488, + -0.19696506960646043, + 0.1575303068414564, + 0.041263384999260966, + -0.580373867765271, + -0.6652540535073357, + -0.30295944039902223, + -0.5373827300483375, + -0.09066443222842713, + 0.39648254222729895, + 0.3050508701957272, + 0.1229558106676889, + -0.07282467934386161, + -0.4465685918323448, + -0.6596494019542574, + 0.07664919913493995, + -0.2005485754868832, + 0.08574346724138326, + -0.6495236168435471, + -0.0019051870222935863, + 0.02663225155732385, + -0.6972190033890983, + 0.2853330617202038, + 0.23541626177743835, + -0.2795509863828774, + 0.2678115844187269, + -0.19387751544358556, + 0.2913089247095688, + 0.3987533569929341, + 0.39220908790358855, + -0.16544364529857103, + -0.07818953108029869, + -0.14339874697301025, + -0.09717077494765414, + -0.1451656269759004, + -0.05099853159166523, + -0.5411093669848995, + -0.5616656532215882, + 0.1285380678904443, + -0.5260133249154317, + 0.2941335668777658, + 0.40443400064439905, + 0.18189761414940375, + -0.3665034640485868, + 0.17656725986428445, + -0.1146201476288603, + -0.6360107094535021, + -0.4376142134731904, + 0.3206424310756987, + 0.17279081626549364, + -0.49979551797169625, + -0.07598237135822516, + 0.20764345692397956, + 0.1613211482410507, + 0.33759162894856465, + 0.2894042147299548, + 0.2748156819581019, + -0.3265044649512208, + -0.19747176911396003, + -0.1557487363014869, + -0.2360571325174421, + 0.0034331469169788242, + 0.041075503991554796, + 0.22082755595261638, + -0.08192849758012688, + 0.0509068645206423, + -0.6515950469938313, + 0.3436153757248156, + -0.07271448928714708, + 0.06371092308027415, + 0.11009566520390712, + -0.23264480976611296, + 0.15404741968283897, + 0.22949142422913216, + 0.15326286956537338, + -0.34279062695937884, + 0.2354172139854046, + -0.10071246356427954, + -0.6145416098246513, + 0.21316042394281576, + -0.28678783382476, + 0.026146850527199672, + -0.24665118745251624, + 0.38631290308770316, + 0.17482827816843605, + 0.3460416169037964, + -0.2959606680191245, + -0.4772246181186765, + 0.3419286362905448, + -0.21690704395230276, + -0.5778274508141121, + -0.21094133165382156, + 0.15427407415436178, + 0.17969051763552124, + -0.46423369653125146, + 0.032106740224706165, + -0.09897076893090617, + -0.1028960327088726, + -0.6594943345261891, + 0.05697201247149908, + -0.6840163007507484, + 0.2304267262702192, + -0.3718575947018205, + -0.3413936073644248, + -0.2313317615250125, + -0.623921750592965, + -0.23267819346905977, + 0.11365593949406883, + 0.019024192763240744, + 0.2649802128489045, + 0.3903522167368242, + -0.6203623642155469, + 0.2694314656785204, + -0.4588882906541262, + -0.24860406909856736, + 0.2757935617016457, + -0.5718460016596633, + 0.21776290070643245, + -0.13357302028371176, + -0.2508943132091021, + -0.5184423753736607, + 0.17309341178659166, + -0.544467791968306, + -0.3265647546279204, + -0.5835346870187648, + 0.10241592783672782, + -0.6206911405329482, + -0.30125968866173575, + -0.6337568450829592, + -0.10148051273774505, + -0.6650426159299978, + -0.23991494110366363, + -0.2296149051248782, + -0.19744646309698477, + -0.5094693480722075, + 0.16998956704446877, + -0.4982482140573036, + -0.43444926031004544, + -0.5387045387283642, + 0.04565163155361163, + -0.34253205741892256, + 0.24982194996233442, + 0.1514239616385492, + 0.05550276437242874, + 0.3298115670948464, + -0.25440796235642177, + -0.0024990480477787846, + -0.12442228481610706, + 0.3620647810614651, + -0.6171493235214381, + -0.26147032184442914, + -0.056808902890622015, + 0.1872370291667581, + 0.24980156099024575, + 0.16239811230914358, + -0.4139149301788422, + 0.1871920273503226, + 0.3143447818358328, + -0.2755170512555405, + -0.4782417335180831, + 0.31451870489080525, + -0.24777492183916133, + -0.08965234665990462, + -0.6921914970411689, + -0.11077108444373285, + -0.11232954656756022, + -0.23533036279975145, + -0.04911328057993769, + 0.27423865000260406, + 0.0847132959717265, + -0.32421053100148317, + -0.46409008566279664, + -0.14317664687541043, + -0.42648928886740767, + -0.4368873337720011, + -0.21574471159246889, + 0.11768748355991476, + 0.017481654576792294, + -0.35977944317332533, + -0.6107184286149726, + 0.32926245184627045, + 0.10630897458825128, + -0.13417366924446872, + 0.15040527162766082, + -0.3237122970709297, + -0.5492367091095269, + 0.3944503791905084, + 0.3290620009209734, + 0.3729194007950133, + 0.2234175648861576, + 0.017627634124435243, + -0.06126335378238701, + -0.6085433614182345, + 0.10362404423108984, + 0.12760054983052704, + 0.39777602147665914, + -0.661169209227987, + -0.6521204557040461, + -0.27848621414284824, + -0.2655841861319928, + -0.17619201238627558, + -0.6273145539170503, + 0.21960422267676116, + -0.4580249516146483, + 0.19388112250666512, + 0.011865186866219513, + -0.4503397530094397, + 0.04610455622331433, + -0.1141191380566906, + 0.2859562963164126, + -0.04429447478392212, + -0.2044465648913837, + 0.2570389591160471, + -0.2753119691856715, + -0.22131366453282048, + 0.22366608344607486, + 0.3242904951747819, + -0.30072148417736194, + 0.18331122904011987, + -0.5147984223919903, + -0.020849753613564448, + -0.12077943607548658, + 0.38946788506999586, + -0.19087582525468139, + -0.3609884155446149, + -0.12216217603163071, + 0.28886013690587664, + 0.025279497994258326, + 0.08254666525581233, + -0.5102191208547653, + 0.07197196213595558, + -0.24384945104984096, + -0.7009851414391722, + -0.6252699172804517, + 0.11873984208830368, + 0.01613209437649865, + 0.1283891469277907, + -0.05952686709854482, + -0.11819483998199731, + 0.008608448565376903, + -0.5812963233014652, + -0.5865959871234783, + 0.1713361578904723, + -0.47305693596154574, + -0.42936633257742046, + -0.39658838722777223, + 0.39728723922061315, + -0.5258169010176574, + -0.32713637361626896, + -0.12249009349920781, + 0.25305175074723985, + -0.42187515052413327, + -0.00915114149171603, + 0.08365996515421814, + -0.37332652580144776, + 0.3440111400282434, + -0.45291991264026543, + 0.16547343099820622, + -0.5383509097807867, + -0.2106945770362772, + 0.20478192188594535, + -0.6838953268588376, + 0.17237430936210318, + -0.004803717677004382, + -0.6589216406222613, + 0.03214992821654661, + -0.0899805770192611, + 0.14529760662012958, + -0.6369962405226597, + 0.1640236864368685, + 0.14123606018932633, + -0.5934369124330982, + -0.6416567890607894, + -0.4741389139854191, + -0.22419374333345182, + -0.06406593979856456, + 0.14890912541464585, + 0.30048803893202247, + 0.05990674358443593, + -0.47113395905332145, + -0.6275330675059889, + -0.08381949566943292, + -0.6649752723731811, + 0.3497175347111191, + 0.12451389060614859, + -0.4175519845617205, + -0.3210061814569436, + 0.2971603482075912, + 0.23773065114879288, + -0.622676941405624, + -0.5578476157388252, + -0.5210743951166458, + 0.0316005536395455, + -0.11679254364874359, + -0.2449413715948462, + 0.16966224025299792, + 0.32348225876061376, + -0.5866170459475738, + -0.3704121444600715, + 0.04575758483181547, + -0.21302158988415504, + 0.3852247602186504, + 0.07574934846186321, + -0.6172560749565591, + 0.1158628244125125, + -0.5683563874869924, + -0.6569491242360732, + -0.6066107672933807, + 0.08969282762038044, + -0.20482849337447456, + 0.009727061816361515, + 0.12593585685700803, + -0.06919574188043098, + -0.2661580319241996, + 0.2005748500259611, + -0.12930917409285514, + -0.3968361018601329, + 0.08720962720307235, + 0.3390702015980004, + -0.37037205169847787, + -0.19588590088234803, + 0.34043653405859875, + 0.23493310991755922, + -0.4404500846164749, + -0.5256729098901587, + 0.16367911175098893, + -0.3567572778746506, + -0.6155294445843643, + -0.6738374938608104, + -0.30964007183041903, + 0.2045836685346717, + -0.264846545519427, + 0.254638905457537, + 0.31818263306030803, + -0.04232141068019013, + 0.06680324495569645, + -0.043887485220784894, + 0.05723872591587775, + 0.11393918243242562, + 0.3182164982584329, + -0.23315234938237345, + 0.29860867741379826, + 0.3672004442748179, + 0.12135402749513324, + 0.3886939713393661, + -0.15270301468237768, + -0.11304962605391411, + -0.28766706591810204, + -0.13675657781553885, + -0.10728408881936713, + 0.10880849382191404, + 0.09011236356263386, + 0.34103799086732545, + 0.1783637173948961, + -0.0915675203878007, + -0.18522823278975542, + -0.35143477834920295, + -0.6962724296983454, + 0.2739252519634289, + 0.22064776724160762, + 0.07253593711565398, + -0.5996961243223382, + -0.3951891678863739, + 0.2497372290933091, + -0.09967348952773047, + -0.47093335327001384, + -0.5245172731248087, + 0.11241098601259647, + 0.31503264093297345, + -0.3828757407245425, + -0.18430373033861835, + -0.31925054642308026, + 0.22484034365136296, + -0.16230874311950438, + 0.3040454414977277, + -0.11828091620023795, + -0.4848673760692611, + 0.40108502108112154, + -0.6465561179277449, + 0.3070332981347682, + 0.04314869937982624, + -0.21113362158334287, + -0.20435014723213468, + -0.4592787903585677, + 0.13500893249553259, + 0.005329600947600044, + -0.0855494611781672, + 0.10353348761916759, + -0.07657117362458521, + -0.28580842010750673, + -0.46420384487255695, + 0.3204503822325996, + -0.578846114859754, + -0.46686873467336965, + 0.1711552147102573, + -0.5190988932379159, + -0.06415506513892932, + -0.34783111285835855, + 0.23056123831209274, + -0.15385013772698808, + -0.34979098309682627, + -0.15742267235312069, + -0.5326103324336655, + 0.14940891596222305, + -0.6547314938285037, + 0.3862088556454869, + -0.6368625834966648, + -0.45711769438592376, + -0.35822912019741426, + -0.46554056518816367, + -0.34740117732789483, + -0.559408238150501, + -0.20260426865600845, + -0.6782972872330755, + -0.2935828740410166, + -0.6965607476490742, + -0.5686740588738385, + 0.07078529128906774, + -0.0872960559883893, + -0.2401004132301715, + 0.03315585586036485, + -0.4889865650555344, + -0.3534338036020074, + -0.5516616770355063, + -0.43739780023310915, + 0.01151093822344873, + 0.3613507846443972, + 0.14952412079431554, + 0.39792384835650185, + 0.14980868840331918, + 0.12388883966968645, + 0.10741629481753323, + -0.1741706053044434, + -0.5606669707154054, + -0.11137851735977955, + -0.4218145658694839, + -0.4101302878251631, + -0.42842879328871525, + -0.07061727112685212, + 0.03940076436401707, + -0.14283305391223133, + 0.01000186428182881, + 0.22680970478659834, + -0.03908622781270721, + -0.27906587008630035, + 0.02608311447212086, + -0.05490319059243598, + -0.08783520494736696, + 0.11375390218318171, + -0.1559339919662467, + -0.3768873443941347, + 0.3223000507683703, + -0.07148951155649708, + 0.10827739330655017, + 0.1308382122448578, + 0.4135876389541445, + -0.0301817273058419, + 0.19154752780506124, + -0.6360912775650034, + -0.4618618144958348, + -0.5968473311362548, + -0.6541280455644194, + 0.07731697419631023, + -0.22730292570253086, + -0.2203774408622482, + 0.4005920547549643, + -0.3052937511308363, + -0.5874264960341173, + -0.27819662297174114, + -0.6948184570339313, + 0.08345303732513176, + 0.21911533273394723, + -0.6186280654628213, + 0.345549788909738, + 0.13303662024510743, + -0.2745451515132763, + -0.16029082875634482, + 0.2110568721281323, + 0.0670656467912365, + 0.40293838232818857, + 0.09040791485761968, + -0.6948103042194478, + -0.4852935567557928, + -0.39783124217264687, + 0.3093610853512053, + -0.6791126141761624, + -0.18889075592677684, + 0.10053376475880238, + 0.2755525754003266, + -0.5959042576221052, + -0.22665260556221006, + -0.2232646718012637, + 0.1269227168552327, + -0.2045514771271577, + -0.3862309253073136, + -0.379844719300621, + -0.5958573820484003, + -0.4861731209907654, + -0.23184159817666916, + -0.09542810494407672, + 0.20527696938232232, + 0.3872238830703648, + 0.027749177459926555, + -0.14288666094110347, + -0.302300928060849, + 0.3657185729632445, + 0.24193378588463998, + 0.30469290113314973, + 0.003110535108752144, + -0.3202601168521711, + 0.013181205478797087, + -0.48055790825622147, + -0.03296094469689359, + -0.4965356137210718, + 0.08170344364342641, + 0.2715038630909249, + -0.3064475521013764, + 0.24283807355759923, + -0.27438612582297534, + 0.3546878316987908, + -0.51289592413071, + 0.057416283448713634, + 0.22018850991744743, + 0.3933093352902214, + 0.4015303964118787, + -0.4774951132380443, + 0.26432613785409387, + -0.10270782571955528, + -0.32160131534140596, + -0.6649114106034167, + -0.13257152727522248, + -0.45893217951368426, + -0.18958709140757313, + -0.3700653072521123, + -0.5982688030522217, + 0.36631235094949977, + 0.05267973883841082, + -0.49238980862224635, + -0.6161537440190832, + 0.012676496945471682, + 0.08902359329176168, + -0.07797090646793436, + -0.49249755543218876, + -0.17320027113229752, + 0.10896550347735867, + -0.6857842400836531, + -0.3360196296363558, + 0.0300977379458911, + -0.05961270247359107, + 0.14336574561537496, + -0.6510847047047462, + -0.5734160525071198, + -0.5104270627453981, + 0.088163265426486, + 0.2844838671483686, + 0.3971243759594886, + 0.19514812247926927, + -0.6794025237075074, + 0.29455736633630125, + -0.3280161419731394, + -0.6944547533968399, + -0.5391079738772787, + 0.07719238699311326, + 0.3818631901873618, + -0.45017161100236047, + -0.19434744943181304, + 0.26360962870804183, + 0.030495246163896872, + 0.08988436447658044, + -0.11608775709870423, + -0.48815270749990125, + -0.10258702894428051, + -0.6292682365439597, + 0.061953231134804776, + -0.5582391222398491, + -0.2105867346729528, + -0.2975685442392724, + -0.5588779239117532, + -0.5789140338981503, + -0.1413083145473677, + -0.5992837910273031, + -0.22850602171263845, + 0.13009327170539675, + -0.4100621368968362, + -0.23598751895348724, + 0.2566616503556125, + 0.15425537015241209, + -0.6432655910105668, + -0.5634154172391994, + -0.31310327434819185, + -0.15288374710874508, + 0.31309377622501644, + 0.03946272589916422, + 0.1959986095061783, + -0.22750277162387333, + -0.08867101839050229, + -0.24203285277607334, + -0.010288225537806173, + 0.026184544971059043, + 0.2513815549592737, + -0.16465921056583577, + -0.04489536460983601, + -0.49926714020972, + 0.18712710164508395, + 0.19017957563778976, + -0.19178374156495293, + 0.16063180758888462, + -0.3051528296022699, + -0.5994401978733453, + -0.08822470620446121, + -0.5030305607730285, + -0.590363915439653, + -0.5014212174041723, + -0.1986198737082122, + 0.4674341763213764, + 0.5420539254124901, + 0.6592297266575421, + 0.5854804768496131, + 0.4814109231505225, + 0.5968451636416069, + 0.49724994961467, + 0.45393034879827526, + 0.46420408278652936, + 0.5786667059747963, + 0.5482856830996818, + 0.45311037699689055, + 0.6329551376367797, + 0.4503970606016457, + 0.4970653963144162, + 0.5473317764589749, + 0.437433663959741, + 0.6466785274965814, + 0.4387169203306303, + 0.5158488524542507, + 0.53834467537197, + 0.4237198871442378, + 0.5562653945485598, + 0.48234664138791855, + 0.4310140861443698, + 0.5161866451388599, + 0.6705797088465225, + 0.6635927109837054, + 0.5657025820459678, + 0.43990605064036437, + 0.5447922135671159, + 0.5128185932154441, + 0.6139164044922971, + 0.6295666084212204, + 0.6252293339229402, + 0.45805690578781, + 0.6728871939488039, + 0.6371982348459604, + 0.4325571584564463, + 0.5649773318188582, + 0.6066228428533091, + 0.4842970972681528, + 0.544325991396472, + 0.49035140711189273, + 0.4881521436673356, + 0.49951306927280253, + 0.553922728735075, + 0.5744456724886463, + 0.6457402089616897, + 0.6461266313983803, + 0.6071165634338314, + 0.4428488166561421, + 0.49097219162779027, + 0.5248129395584047, + 0.5609669936393582, + 0.6202585732635575, + 0.5549609951727332, + 0.6434968126163341, + 0.4717700910010644, + 0.4622894639969762, + 0.46596289541145924, + 0.4606328975354214, + 0.5871612878632104, + 0.5003142443693706, + 0.5699028167349656, + 0.5567525269586613, + 0.42032873675461446, + 0.5107086455953256, + 0.6418421234304174, + 0.5821544141926375, + 0.5998706978314299, + 0.6180767518367756, + 0.6204710319529498, + 0.5351407799565968, + 0.5945321660719296, + 0.47319540470538746, + 0.4768291388132557, + 0.4916087049839365, + 0.46270210890112107, + 0.6283933624108718, + 0.6455819248323083, + 0.600774144960079, + 0.6637616352190279, + 0.43567076458528214, + 0.6698077905323113, + 0.6272490780230322, + 0.6192515897705617, + 0.5751034647710036, + 0.5306808771696223, + 0.6341170923108062, + 0.48823873223823955, + 0.5553381069482131, + 0.5873864692352018, + 0.6137400023958357, + 0.6388798569829655, + 0.5268776181996615, + 0.5790273719927985, + 0.49859522613550966, + 0.541676872292598, + 0.5435862409332185, + 0.4322580337265353, + 0.6375096037115525, + 0.4913826363881254, + 0.6270851468393341, + 0.4713055797897616, + 0.6086388710755517, + 0.6738544758785563, + 0.6273834067799136, + 0.5299242359599197, + 0.4185170508297353, + 0.42629337297357256, + 0.6009538437943178, + 0.46343094614600383, + 0.480090753612673, + 0.6137292058244812, + 0.5238609273917348, + 0.5376337436426795, + 0.4903966607112131, + 0.5629602891382564, + 0.5344678607474925, + 0.6470802906438068, + 0.44145423874008993, + 0.5137751870198444, + 0.6071829567715165, + 0.5849688191484499, + 0.5134027979476665, + 0.6589815436306298, + 0.6181359242961386, + 0.46622850013023936, + 0.485660603603865, + 0.656837806785233, + 0.47129707118819175, + 0.5785014593256994, + 0.5829290204447165, + 0.6363068499710567, + 0.5516715474407697, + 0.49894813318551334, + 0.5364074264462153, + 0.5917885480902132, + 0.43206857612983, + 0.6619359755278256, + 0.4533190912626591, + 0.5431263405192199, + 0.4684189196812743, + 0.5084915713784353, + 0.6475651262767762, + 0.6652630971623619, + 0.5863526386546289, + 0.6423468283177979, + 0.6387400414784019, + 0.553544037358878, + 0.6373717298973551, + 0.598029654470537, + 0.6124620335032895, + 0.486265263537652, + 0.6276416994944343, + 0.4528997455854161, + 0.5303836096925258, + 0.5044821499958442, + 0.5092692358823151, + 0.5726805590580115, + 0.6335271290916902, + 0.4241148029465642, + 0.4780602779789711, + 0.5072332078915623, + 0.5191800771344939, + 0.5724648631142694, + 0.612863592602764, + 0.6277706863449661, + 0.6632572619091675, + 0.59693698069152, + 0.48264443024691134, + 0.6217871835245562, + 0.4603932297992795, + 0.6378757448159743, + 0.5708742127239732, + 0.5933162155407821, + 0.5312469616720906, + 0.5536957072885555, + 0.54739378068374, + 0.48445231689230145, + 0.5624147089672218, + 0.6078568365008923, + 0.4825955879780662, + 0.6693824134462376, + 0.47636603166118446, + 0.4484346637060803, + 0.6755027522673198, + 0.6177921169122649, + 0.6272692539896341, + 0.5987343924869968, + 0.5154118011137121, + 0.5983099014952165, + 0.6153692731627101, + 0.6557152967381263, + 0.5000312128320163, + 0.6652113904471284, + 0.6030795275788443, + 0.6141460927313582, + 0.5596860648756049, + 0.5986120659397449, + 0.4938560091402009, + 0.43611913108881867, + 0.4604517949176197, + 0.4831728469942052, + 0.4431966092629867, + 0.5939472825240782, + 0.4507265169883076, + 0.6093587427518725, + 0.5877218469912404, + 0.506862149538697, + 0.44875066157406884, + 0.45793502707155687, + 0.44018529949796653, + 0.5747793625136739, + 0.43780860214042805, + 0.5168085693089912, + 0.5177196288272081, + 0.5753105160022003, + 0.5550097232181904, + 0.658670668989513, + 0.6412177982605612, + 0.6363457484815642, + 0.5441510189587092, + 0.6391900608686572, + 0.6628996788158477, + 0.5092460055640639, + 0.4269143745623648, + 0.6196651356259205, + 0.6459335364176745, + 0.44829797076625866, + 0.5874476980210436, + 0.4355172928207225, + 0.5857464389304033, + 0.6257229477761885, + 0.5402125738029191, + 0.545033901184193, + 0.5789129866985342, + 0.5618542838145933, + 0.5650437496370394, + 0.649463024840668, + 0.5001375683699432, + 0.5644436729684134, + 0.6375428618366663, + 0.479873358716355, + 0.666690606763042, + 0.5586899761155781, + 0.5102896243213139, + 0.4871096235525132, + 0.6662316912678525, + 0.5867457709534064, + 0.5096122707420818, + 0.5716197095420408, + 0.5728833804978186, + 0.6234064657056231, + 0.632506733294896, + 0.5162603772324839, + 0.43240642629512893, + 0.5232507375925354, + 0.4413740695940175, + 0.47473683721702387, + 0.46260772811086376, + 0.5005001136640667, + 0.44466623412770256, + 0.5440041953792338, + 0.6349124654651287, + 0.5067243679449225, + 0.6079328908313011, + 0.6098422021380696, + 0.5203166339105789, + 0.47830199358630826, + 0.45774294798397025, + 0.4543537085994652, + 0.6192850808867276, + 0.6072018255973984, + 0.582415733264982, + 0.6591135687365302, + 0.43013296933404804, + 0.6611612798312771, + 0.4608300231577807, + 0.5302160104179617, + 0.5742828627181795, + 0.5114470451444928, + 0.47722002575039596, + 0.4548626274263117, + 0.6755338194513842, + 0.4808852534612501, + 0.5148757705475746, + 0.4618716651854826, + 0.45882295866173944, + 0.43901741592278787, + 0.4976841969086656, + 0.4969383729193578, + 0.5617863189905521, + 0.526147200553068, + 0.6746423409128466, + 0.637026250750818, + 0.5519024899065211, + 0.4621954487004976, + 0.4940214557858542, + 0.5567403779212075, + 0.6066172152983637, + 0.4469046398113415, + 0.6303672365409566, + 0.6242109158697227, + 0.43963584001535283, + 0.6073521735964696, + 0.6023206259789691, + 0.6198291620618346, + 0.47345742615969566, + 0.5808314407049127, + 0.543856035089381, + 0.4479777356959779, + 0.5582756281494973, + 0.5333009532395458, + 0.5392503750666627, + 0.6609673750274927, + 0.47222590900279227, + 0.49822181200771054, + 0.5246788981030743, + 0.4907467701990235, + 0.5344993101031748, + 0.5207077781790682, + 0.44820035088293625, + 0.6356289429921735, + 0.428794984633122, + 0.5092204756292538, + 0.5550165650600659, + 0.4878467897512861, + 0.5481512364533279, + 0.6490387208519751, + 0.6142522963459744, + 0.5681194759730086, + 0.6523598408438566, + 0.6162133672763177, + 0.5980931318354286, + 0.5300801427588163, + 0.4449509351319563, + 0.6495949224115514, + 0.624523581527455, + 0.4267829730087652, + 0.6739838427727136, + 0.537087567959511, + 0.5260912283935472, + 0.6580756308366497, + 0.49379574910455, + 0.5118671424057131, + 0.5143842695839108, + 0.5968359604979185, + 0.4903147619495039, + 0.426353220820696, + 0.48100389056871146, + 0.6412272748665911, + 0.5039418924416001, + 0.593059743805683, + 0.5172139896766281, + 0.41805614351155274, + 0.6668549030229215, + 0.5860977381158725, + 0.6193758666218552, + 0.6259995315491169, + 0.4945796260295595, + 0.47476218278318305, + 0.659340519794962, + 0.43794492472360436, + 0.6584120792430973, + 0.510278343279303, + 0.652383386428919, + 0.543194744166043, + 0.4378219580126148, + 0.5545379177842602, + 0.4509108812766529, + 0.5349174735624004, + 0.5590099771288486, + 0.4659969989812755, + 0.4512414902444197, + 0.5229388545205581, + 0.5522562967315601, + 0.4944579321542084, + 0.49954040175028336, + 0.42260084774210793, + 0.535478877603105, + 0.5654419149660532, + 0.637299695366859, + 0.44363237931573024, + 0.5367145887785808, + 0.6657175470221559, + 0.5559006083277793, + 0.45671693217298587, + 0.46072377246816243, + 0.5135420401415893, + 0.635449404650353, + 0.5284221266102663, + 0.5178584456800421, + 0.5725892351959766, + 0.5031541234669046, + 0.6660879707831288, + 0.6120825610936936, + 0.540279015316429, + 0.49698426958480535, + 0.5681084827292692, + 0.6242695470492894, + 0.5004299909380394, + 0.4911390948434139, + 0.6146715073487065, + 0.55831824583249, + 0.4530114202312831, + 0.6074640156675691, + 0.6154723334975585, + 0.5992437267567092, + 0.5118444927209195, + 0.6283648455708937, + 0.6065177420655278, + 0.46293005558901834, + 0.6079104676796193, + 0.4905071190629247, + 0.5809906722310887, + 0.5491141956813124, + 0.42693913508435594, + 0.5757808984693259, + 0.5933289293301643, + 0.5337690468070537, + 0.5029267749863433, + 0.49495197582147576, + 0.46932371621092445, + 0.5553520309874104, + 0.6479767893792774, + 0.5527798189064801, + 0.6580148650543524, + 0.6280504213483815, + 0.6040615507824502, + 0.59644808902457, + 0.582694170009862, + 0.5090873256690353, + 0.4400596334284925, + 0.4477188554731578, + 0.5054266040410771, + 0.5581628811547719, + 0.4972822158008782, + 0.6084524728223781, + 0.5739500047084555, + 0.49035666176462783, + 0.5529514783696118, + 0.5914075485909807, + 0.67538983994488, + 0.5085965980809788, + 0.6598147482933657, + 0.4323444705298839, + 0.6006428520722422, + 0.5104499544818366, + 0.6485151376015932, + 0.5430976610091469, + 0.6295449660364517, + 0.5160014050230306, + 0.5006802266816713, + 0.42694010608997185, + 0.6518422696735923, + 0.6178595319228681, + 0.574400546808636, + 0.5434669180298011, + 0.6348719999659375, + 0.6557729701444659, + 0.5308184761792736, + 0.5438604286220285, + 0.670718384776195, + 0.5648205975790153, + 0.4936802868389032, + 0.5345356453523964, + 0.5082343438184401, + 0.4256772287290611, + 0.42313292557439397, + 0.5534458900307653, + 0.4637613242904179, + 0.42245048697166454, + 0.6137144377265251, + 0.4443069326420005, + 0.4854204463696326, + 0.5548749924915477, + 0.5117667170937367, + 0.5520638033094771, + 0.6147898175442287, + 0.635558991637625, + 0.5638572141945352, + 0.5726952390369426, + 0.554019410858893, + 0.6660878663830436, + 0.49525214539391577, + 0.48122107825086635, + 0.5545453482986078, + 0.6699492737816963, + 0.46298672522318196, + 0.6181151958340659, + 0.47436316582025223, + 0.43190500387274167, + 0.49250479253910995, + 0.544271454701356, + 0.6522463641201073, + 0.6163910589755587, + 0.5147275692168303, + 0.49319296504151217, + 0.5826684057187235, + 0.6358197294702331, + 0.5416214821298686, + 0.48008651016909015, + 0.6492073439181617, + 0.42260679640309556, + 0.629989037448212, + 0.657301084041479, + 0.568209486180431, + 0.4414560414393055, + 0.5690979973178488, + 0.5960454510633756, + 0.6194414836411287, + 0.5996675085902231, + 0.5659518667321599, + 0.5920103853706724, + 0.4782864198700212, + 0.42433335482101275, + 0.48200220370967994, + 0.542006012436168, + 0.6528009301820393, + 0.5783767757057955, + 0.5844413306523676, + 0.4833647160938334, + 0.44802212903352523, + 0.49897850432777724, + 0.5591149050428208, + 0.46980832959847457, + 0.439571297950881, + 0.4425393646047051, + 0.5617388586522751, + 0.5606384545821183, + 0.5172761885184596, + 0.508167321155661, + 0.5879132274373654, + 0.5630636760015889, + 0.4324909571409352, + 0.6482877515917723, + 0.6485141465843491, + 0.5687386034094687, + 0.5963949691482113, + 0.5540623417330249, + 0.4913978077860422, + 0.6703478840071713, + 0.4239707351098261, + 0.5414781637621419, + 0.46200382199042805, + 0.46959732731481796, + 0.6682323587124259, + 0.47777509237291915, + 0.616197645822351, + 0.5234640937327312, + 0.5771979044100117, + 0.48296402334032085, + 0.6164329989352109, + 0.559319139680866, + 0.5308791411211339, + 0.515439663645697, + 0.5048692606389887, + 0.4629599611853106, + 0.45709006519684237, + 0.5863408436316522, + 0.5995111692390515, + 0.5325912025738845, + 0.46571514226584776, + 0.4645205022145728, + 0.6626921631154359, + 0.4956096452516222, + 0.6363658570803743, + 0.6259934689140431, + 0.4672119219842729, + 0.6354801934164509, + 0.4658848982233089, + 0.490143462549298, + 0.630832754206834, + 0.6295022271715566, + 0.4183133435139623, + 0.4394573718827477, + 0.6253256453736712, + 0.5066543444149957, + 0.5640987317517786, + 0.46459011771453634, + 0.5391808433292018, + 0.630317392074155, + 0.6127850156161817, + 0.6718477340803675, + 0.47369257588793445, + 0.671774511182929, + 0.6213649958364811, + 0.4977147230668319, + 0.43196644223391584, + 0.4539048669829134, + 0.5044513969340377, + 0.6223531856936368, + 0.5969851060213449, + 0.6387359682751598, + 0.5200566786879803, + 0.6741139580538985, + 0.5031870913222498, + 0.5977819975392813, + 0.45161147177961325, + 0.661539033866589, + 0.443463423655722, + 0.6665255594659715, + 0.5951801329211788, + 0.48991668043948833, + 0.447779161777201, + 0.4518130371510692, + 0.5771734806227231, + 0.5352156895484459, + 0.6529724505636997, + 0.609706311695312, + 0.6368094450169708, + 0.57061860671665, + 0.5363294529881435, + 0.5476732687367042, + 0.5049232879704582, + 0.5354317975718653, + 0.5969427210416507, + 0.515640823052235, + 0.41946604920977787, + 0.588414875139128, + 0.47778498623130344, + 0.45355246383195624, + 0.5174364529938532, + 0.5103880933737921, + 0.44219083044836777, + 0.666088145962821, + 0.6636074473146492, + 0.47692222799914374, + 0.5531799909043248, + 0.5892951974429909, + 0.5099706764790207, + 0.5019580338566951, + 0.496291300817115, + 0.6505870336262342, + 0.6303055002836201, + 0.5693481895682326, + 0.4879705337596449, + 0.6162250251297505, + 0.5060599454742185, + 0.6538239031658255, + 0.5294589090201278, + 0.596048650801392, + 0.46065211206608214, + 0.5064747000639123, + 0.519756707501114, + 0.5230382341445254, + 0.4265381017881242, + 0.5711022311577458, + 0.4580142332496942, + 0.6066429683197547, + 0.49988193691533445, + 0.6260095292394353, + 0.6519887232604787, + 0.5155227839390981, + 0.5684884589987342, + 0.4287088279202834, + 0.4430293232641885, + 0.42864910317231464, + 0.42049372693034714, + 0.6386880677726037, + 0.6481255254149257, + 0.6463798863001994, + 0.4823740068732457, + 0.43813463359681787, + 0.5601313373000347, + 0.5400181105609843, + 0.587949024132556, + 0.5196521931801825, + 0.6581302715139099, + 0.6271071806054245, + 0.5013887453467445, + 0.4632093410296341, + 0.46540538117004604, + 0.4914114598829813, + 0.6386123043736134, + 0.4339543722102577, + 0.461623257364374, + 0.5327916612677219, + 0.6638736222104763, + 0.44228600781562605, + 0.5291009279315599, + 0.6743111761160566, + 0.44154997114073724, + 0.5913732340101286, + 0.5484552104563477, + 0.48787862176150787, + 0.44242148419505, + 0.5435470815513115, + 0.6568735566958117, + 0.6659740812263231, + 0.6625704412419343, + 0.675531448570769, + 0.6180454610888914, + 0.6278516479889766, + 0.6551603866001334, + 0.4485778099331271 + ], + "y": [ + -0.3019206158563271, + -0.24029538829620556, + -0.4104350583063272, + -0.11194905596738192, + -0.28675296427848873, + -0.33388779216947617, + -0.502561248703489, + -0.3590285468107309, + -0.12951887599911405, + -0.4236884720513067, + -0.6861339538819354, + -0.8044427835894766, + -0.8447203087103776, + -0.5004991333326907, + -0.0905940402868538, + -0.290870075998122, + -0.8439447892163728, + -0.6652911670361107, + -0.08536673762904468, + -0.5885509017264076, + -0.2323360413889609, + -0.14267053816441255, + -0.7888800764228404, + -0.48674276392909666, + -0.7651249654746298, + -0.577257410667545, + -0.6373297464706759, + -0.03513549834606344, + -0.4451133910909785, + -0.5536559678209119, + 0.12066508330088299, + -0.8345888312794106, + -0.6253006042249872, + -0.403776300613717, + -0.5749149199346111, + -0.8014090701254156, + -0.3280409131884785, + -0.6812987960457341, + -0.5993399239835153, + 0.06872219665679091, + -0.6653186867883145, + -0.3310507387178855, + -0.7080161614765277, + 0.11651497757840856, + -0.3135328185340063, + -0.8233999990337626, + -0.6804106358259828, + 0.02074875035955559, + -0.7077090993542903, + -0.7295729066229115, + -0.12869996303419662, + -0.026022641727327267, + -0.3273520292588272, + -0.7551716066823252, + -0.7127481310579561, + -0.22474050157174796, + -0.5929618669727159, + -0.24252555616139593, + 0.13395823017981556, + -0.6641403690862195, + -0.6253286242711257, + -0.7329169191336551, + 0.10153407326180541, + -0.6955391964593025, + -0.4729183044879709, + -0.35103620041871725, + -0.7910153841698907, + -0.4939408022529764, + -0.3658055551045795, + -0.4139382788777219, + -0.33849092109899126, + -0.15445744107923853, + -0.1722315596501398, + -0.4545634377882526, + -0.3232710530248516, + -0.02445435851517097, + -0.4339703697957739, + -0.8045281134265647, + -0.4902878874844662, + -0.7911328579710526, + -0.20981364503915434, + 0.12189300817948812, + 0.1414060270470474, + -0.4121443043693007, + -0.014528743647285847, + -0.3020776798925976, + -0.8153258291656453, + -0.7853942048482316, + -0.1369736002742522, + -0.6869306183279017, + -0.1189855077427967, + 0.11883463713954712, + 0.008975665115476983, + -0.41643082467691117, + -0.3528553940700092, + -0.6151949260887447, + -0.0055666455833842665, + 0.026036387739130196, + -0.4356812025437315, + -0.5714030147544904, + -0.7881127395664698, + 0.003752901688906407, + -0.03268453710290731, + -0.14468848959523806, + -0.14668303996064636, + -0.4941785133508498, + -0.3713064547822425, + -0.32592388125249216, + -0.04236402224351421, + -0.28672756574071556, + -0.7810068792673688, + -0.5877576009828969, + -0.8124123456461233, + -0.34206993770028393, + 0.07483428533832304, + -0.7243453231716422, + -0.41068651885248053, + -0.03089620831445994, + -0.26500275301563436, + 0.06069487649890326, + -0.4108865643458476, + -0.0020170050187191535, + -0.1958272900936403, + -0.7787082612231075, + -0.29246863868067574, + -0.7093791522209527, + -0.12506242484989893, + 0.012168902090948674, + -0.7542753301430588, + -0.6395571409482722, + -0.7539481911246094, + -0.13406740524155125, + -0.2837496144675905, + -0.14317975253253568, + -0.13644428595207791, + -0.6410400237861441, + -0.02659486334979544, + -0.4427883806461398, + 0.00100758553533975, + -0.15464884134246593, + -0.7320903773077101, + -0.5216181024312827, + -0.691132451112203, + -0.5037351317846002, + -0.5693641751568121, + -0.5261975651832421, + -0.2730693585255223, + -0.6790852547871076, + -0.7392768171552241, + -0.10731648080392597, + -0.3081452807401952, + -0.7907125367239902, + -0.05253953383835752, + -0.5246468475900261, + 0.06254414160889643, + -0.8266864644889987, + 0.13091783303642013, + -0.5311229980442896, + -0.6844175524533894, + -0.18607995890933804, + -0.3015493496508719, + -0.3427730030933325, + -7.387503299738363E-5, + -0.6786643458374989, + -0.49561673514587223, + -0.30650501147296905, + -0.40347486430812507, + -0.23158063072737378, + -0.6024180234871837, + -0.022851874581586107, + -0.5107974317562934, + -0.13370062140006522, + -0.4003851750406516, + 0.07695357086977461, + -0.3195237210541163, + -0.6384769911811228, + 0.011825771893622772, + -0.02168028171443681, + -0.3518946513982119, + 0.06347750882114456, + -0.44253753711769006, + -0.5871681493750158, + -0.4123258779916201, + -0.7220353236579247, + -0.38910356403333396, + -0.8468241224631576, + -0.5533632147614586, + -0.6361446872916885, + -0.13405114010979413, + -0.6164377671078372, + -0.1300893481755946, + 0.041353847548780576, + -0.20653081209677526, + -0.12138336991220233, + -0.20549510803536397, + -0.7675932374120435, + -0.2781919855718239, + -0.04317614429471839, + -0.6990915803634082, + -0.6596065616483919, + -0.31048580221527244, + -0.67232307262819, + -0.5111501046988629, + -0.057065580745847666, + 0.10543795191599703, + 0.11075085741575696, + -0.015687840685359444, + -0.484230946034494, + -0.06357123043829971, + -0.3011163357235568, + -0.3075126776454249, + -0.0968511145262484, + -0.10692110031122759, + -0.7876158315886781, + 0.04173501045038486, + -0.8422642663053052, + -0.5312291231660929, + -0.14075646944992004, + -0.003268768817987766, + -0.4426992963914935, + -0.07462604990977817, + -0.8003722524372144, + -0.6252900044589962, + 0.06777385114450996, + -0.6120320681809844, + 0.032320967535321876, + -0.40318865019227695, + -0.2493894820581063, + 0.012873739291651809, + -0.6530812073292599, + -0.3169051990964875, + -0.7332224249705159, + -0.03557068595956536, + -0.3634670947157423, + -0.20633194189148463, + -0.5828194350177982, + -0.5734524551232754, + -0.4783485545593289, + -0.5365998274637276, + -0.11707737817622366, + -0.42206618289985653, + -0.25223509950658807, + -0.043244351001962666, + -0.3982838908760174, + -0.2474590262042613, + -0.147884136679015, + -0.6154879734266302, + -0.7844840755416899, + -0.04036451182739176, + 0.03191102835939896, + -0.7926975675245336, + -0.16085666379792474, + -0.3205090778869114, + -0.6309262937690303, + -0.35509819712577134, + 0.06462900842615948, + -0.19026709295390853, + -0.03373470078591834, + -0.7500586187657658, + 0.14084845438208538, + -0.30792573230980025, + -0.32151492712422036, + -0.42871942010941233, + -0.2889845819531537, + 0.06948469242919553, + 0.07421016836868888, + -0.34357501247859645, + -0.39777226331623944, + -0.41307837825748084, + -0.7794389401662412, + -0.07206397714771495, + -0.34056869517597566, + 0.11516093119270598, + 0.07458555629811414, + 0.02560351005376793, + -0.5172522247921765, + -0.7966303405857731, + -0.258766816562076, + -0.11841497871582063, + -0.09243731814898348, + -0.08285780729106762, + -0.11033736917499126, + -0.6665668209206359, + -0.13145148925947592, + -0.7763205500367013, + -0.4799698754057183, + -0.10784805856357293, + -0.8256654938190828, + 0.09417523021432161, + -0.37553387502879354, + 0.013581754808739466, + -0.2951371104055236, + -0.8348148598317777, + -0.39212846379393096, + -0.7332334416962244, + -0.27697681943146524, + -0.3795870895006155, + -0.2197404819832781, + -0.4719643373115875, + -0.7976190684863508, + 0.13797423121576047, + -0.35692472273694437, + -0.5988303580293383, + -0.5440254561785839, + -0.47222812348367904, + -0.4616806912111848, + -0.3272886012280566, + -0.6035515149211043, + -0.677981687823321, + 0.027267328129898627, + -0.07392250478737528, + 0.015753693385874512, + -0.5671322438220683, + 0.1261591904867989, + -0.28200222774191885, + -0.0653032685717515, + -0.1877196093707757, + 0.12626016153921737, + -0.736497050426341, + -0.43907946694456157, + -0.2942007230577226, + 0.14060793331303967, + -0.05985729765821779, + -0.038298277563881045, + -0.6118874754173794, + -0.8432778580691387, + -0.056284661988129314, + 0.10589751883308018, + -0.24876894810036176, + -0.7713637211833729, + -0.18379814470203104, + -0.5886465561570111, + -0.7675601954621817, + 0.008223368735022496, + -0.033738645138336576, + -0.6312858480508405, + -0.364256884461925, + -0.026059350430216677, + -0.4405540421635755, + -0.2601227612475626, + -0.8006328006007146, + -0.6678901435772696, + -0.3993851667563473, + -0.4642642048918721, + -0.263578289382423, + -0.37378728916315423, + -0.3561526648134157, + -0.34144170006244523, + -0.7719956807791075, + -0.23622887378559887, + -0.3288656999950442, + -0.15983642267329035, + -0.5716683388094201, + -0.5995681984300414, + -0.12486680403943606, + -0.26526730983467206, + -0.6913133178651389, + -0.19741373188227995, + -0.06947948336973553, + -0.5201991577163816, + -0.68246850664103, + -0.7086623798518858, + -0.621030623101355, + -0.27293630924597323, + -0.36503632431735583, + -0.4274076635436187, + -0.1955031244607096, + -0.766750106258492, + -0.8395633474697407, + -0.10951618143856834, + -0.46494659359633733, + -0.7358156831420093, + -0.5304063309617023, + -0.07006023383376825, + -0.5985383578901089, + -0.1092906730965928, + -0.2895272231063025, + -0.2857474713306122, + 0.1198834596914441, + -0.7911424620206795, + -0.6348716915071664, + -0.5359818838357595, + -0.3153334513570757, + 0.06473771708454779, + -0.8337349006185866, + 0.038088278106538476, + -0.23259570111429062, + -0.320417863807939, + -0.16949911532869777, + 0.12539930854958603, + -0.22466563891963165, + -0.5719704009904378, + -0.633236518588157, + -0.4812033844968486, + -0.16406224735270858, + -0.5988838435863235, + -0.010888893665929045, + -0.597381181363704, + -0.22633358268094217, + -0.7252542100074826, + 0.09218581582690011, + -0.6899344966713549, + -0.10175217851888063, + -0.19936198443601305, + -0.2538876521097192, + -0.4451176398780864, + -0.24942730570547678, + -0.7667281908352902, + -0.5345295919384763, + -0.8324451863616595, + -0.15721687406327023, + -0.46991999209223445, + -0.31445080758590593, + -0.07989859970041302, + -0.7138218255492095, + 0.026807782009240277, + -0.06838873297677428, + -0.48942533448811765, + -0.4284381944490085, + -0.8041838421624408, + -0.6837509198906335, + -0.12632723015109948, + 0.07084383244164916, + -0.1781920152708264, + 0.04855931080945852, + -0.6542246680244214, + -0.21322839804980243, + -0.4965500814672857, + -0.09994859853736782, + -0.24308037273641725, + -0.3049792592112286, + 0.14207626642249027, + -0.7262120426542414, + -0.7912552340041835, + -0.40240466419603566, + -0.0422651309953892, + -0.7631787798035434, + -0.5945752013806738, + -0.4782284119258057, + 0.00535881504546909, + -0.14703454779354597, + -0.1318022317676225, + -0.8197095849256179, + -0.4666256671363412, + -0.46659620681029784, + -0.7559005610019474, + -0.5387741641265954, + -0.24552502181524338, + -0.3270066441276043, + -0.6558793892038501, + -0.22391167098611897, + -0.46336440564879566, + -0.7813015576483144, + -0.7659894457975032, + 0.0862707526898614, + -0.772334290174396, + -0.5972008891016825, + -0.15730406683063947, + -0.464015000554423, + -0.12242366292860485, + -0.793897979553216, + -0.004504870564016827, + -0.7768231557994807, + -0.21999869845280262, + -0.2896683616741095, + -0.029404650793943166, + -0.15687888128857663, + -0.8212372108381625, + -0.5970989185189699, + 0.12295132096467487, + -0.5330029618139487, + 0.060534825914406176, + -0.4823488823546643, + -0.2721192810347596, + -0.330090078555081, + -0.42606060007892876, + -0.746907965024118, + -0.14324436378538552, + -0.10153560285882135, + 0.044198863079441875, + -0.2329359639285863, + 0.0011783736388916166, + -0.2729206177347715, + -0.6967358505955813, + 0.1390440937197851, + -0.4635514461647531, + -0.03188575556885287, + 0.09152609546873236, + -0.6370368557399252, + -0.4647808735192591, + 0.07518922008563111, + -0.19577386627971338, + -0.13955967121913693, + -0.21161672437761958, + -0.35766505409586563, + -0.5479227601357953, + 0.10398124210208515, + 0.03725481110278095, + -0.6913684623883065, + -0.5565548027009699, + -0.10118826769499667, + -0.2677008391414163, + -0.7964646135635467, + -0.8425830348559068, + 0.013398001259963488, + -0.8001024019433812, + -0.1662669608414593, + -0.2848373316797299, + -0.6739149289723965, + -0.5121500176377971, + -0.010878376142872903, + -0.03227969553547927, + -0.4422559238750806, + -0.6200987660983125, + -0.14962542078130214, + -0.825981975906717, + -0.06029849459562675, + -0.8182093660754096, + -0.5325862314054216, + -0.16712738695072304, + -0.8377816136123128, + -0.18575296830599797, + -0.13611078215124028, + -0.3262342624691339, + -0.13921265167391494, + -0.25707981782409206, + -0.68454346719881, + -0.02320304250227312, + -0.09399564717664632, + -0.3464976406415191, + -0.4052211345786861, + -0.29207790218028096, + -0.28541584000192366, + -0.09015375531723879, + -0.7340566395499846, + -0.7722362418346068, + -0.18415274266988912, + 0.07575483599490285, + -0.7618438192524644, + 0.07768471698963775, + -0.7380571673010498, + -0.02893672660709301, + -0.23750459750537112, + -0.8178718105780413, + -0.03525923742788262, + -0.02830507367127455, + 0.14793498667693117, + -0.05164876646561578, + 0.12481947538851423, + -0.5660753013204936, + -0.6481145428242595, + -0.25489928015488483, + -0.7886785482912128, + -0.6565277626539164, + -0.3200468890266598, + -0.8476224520689007, + -0.5360792030047432, + -0.2114005830319997, + -0.48698157275932025, + -0.46498387419042936, + -0.7779933187729363, + -0.7464533390917486, + -0.09823073077144495, + -0.3893201647723724, + -0.7176215756541844, + -0.6378029537907333, + -0.8182262378898993, + -0.03553092464719532, + -0.8070341043294519, + -0.08440024058411677, + 0.0206672580236692, + 0.004803169044695466, + -0.7721660234615064, + -0.1838087150292338, + -0.8061846049600427, + -0.7675996166701515, + -0.4083563121902581, + -0.4056113440767318, + -0.47850249103095643, + 0.056535372154187025, + -0.6290988763806039, + 0.09628002341923902, + -0.025631896251515407, + 0.12094465365253027, + -0.3255776741383052, + -0.7775519912507989, + -0.07548124245990284, + -0.5526353441154349, + -0.6725549626943086, + 0.010501047873605285, + 0.07412972937076234, + -0.7372352080256045, + -0.6910626961865021, + -0.11969479322990995, + -0.7063471144379584, + 0.11171046752950042, + -0.7748333180988143, + -0.7981028041922568, + -0.8340321600975533, + 1.9817303926750185E-6, + -0.6460087984408905, + -0.18798167090784335, + -0.08678452267098025, + -0.2645820160013689, + -0.08443932280822508, + -0.5432788258664776, + -0.4291863163711236, + -0.4668293300894127, + 0.06975362104866845, + -0.7913633732213361, + -0.39310048450524043, + -0.43400204212452914, + -0.006443519598113068, + -0.36793492980687265, + -0.39231001383113157, + -0.7821443891369544, + -0.8180666036519835, + -0.435932866492759, + -0.759128866703909, + -0.29451479894377675, + -0.5790859092308791, + -0.7036695526052428, + -0.4828513897459386, + -0.06859820029932895, + -0.19381877994194752, + -0.4985030987519077, + -0.0667406943287876, + -0.7964417691608827, + -0.6580531235102529, + -0.20630596430503656, + -0.5499148011641923, + -0.8321568297239953, + -0.20459582181896685, + 0.10816177809921257, + -0.6497706315996574, + 0.03139212606399411, + 0.017553484756794524, + -0.6500942743144074, + -0.42573290608656256, + -0.31209153655068556, + -0.14884775497362612, + -0.7664029475476646, + -0.3749029694904059, + -0.21290239078378093, + -0.39141917420356453, + -0.282512616547957, + -0.22058372863506692, + -0.44312552089976787, + -0.03685861332647855, + -0.4182535222279854, + 0.105531517963106, + 0.002215348053244637, + 0.1306833112738658, + -0.7291826856825019, + -0.5638331896887403, + -0.4197474666550544, + -0.41011318546219716, + -0.17043502739491623, + -0.32302680215507973, + -0.6633415520334458, + -0.14695968937289283, + -0.21259500076726334, + -0.5832938010135595, + -0.3927385965016538, + -0.26287986140412023, + -0.615304744586685, + -0.23849354818480684, + -0.15199370350245045, + -0.32818979567101925, + 0.0867095752281638, + -0.6483473265262197, + -0.42019465790956206, + -0.05156177335446632, + -0.18185515594584023, + 0.06097979591102287, + -0.7124284132877458, + -0.6283087389810598, + -0.7340534413353811, + -0.7962733699085153, + -0.501260642570776, + -0.08849588117176277, + -0.2689147743494208, + -0.4137202064284185, + -0.5174184698030477, + -0.6287075856760904, + -0.8013090466359133, + -0.6193946668376745, + -0.17772174760163906, + -0.22273482510826514, + -0.28229809035285425, + -0.13504782346596256, + -0.45381791226512086, + -0.13737408411695262, + -0.8346041551103125, + -0.34844879532721384, + -0.7487650525679168, + -0.04738216187025701, + 0.1376506129354873, + -0.7788506645452752, + -0.12197276614909103, + -0.7533625439880225, + -0.010938596760964314, + -0.5300139060656252, + -0.845911206604644, + -0.45870295854390913, + -0.21203587007148028, + -0.14423074317330242, + -0.4509518847229287, + 0.007381607046920147, + -0.7645730153172249, + -0.32359581960889927, + -0.42713806046205954, + 0.12759587827558372, + -0.636444090449328, + 0.0874033447695084, + -0.680313445554408, + -0.571292555065462, + -0.027284212830381516, + -0.4666262488694789, + -0.5138092087387993, + -0.7496414114964285, + -0.7780773147584747, + 0.024853143737346484, + 0.07042785866503842, + -0.6323057592815293, + -0.24557963116450476, + -0.684201482962148, + -0.7073978149728637, + -0.6384618746454511, + -0.3508413261245608, + -0.6920512751126708, + -0.23952448791158476, + -0.41051266734758785, + -0.37540531334489163, + -0.30484930343692795, + 0.0334560617910723, + -0.7906603021243453, + 0.08453204252898494, + -0.3203016644959904, + -0.18666119336717202, + -0.2831503559182649, + -0.6761677389729743, + -0.5191742399234496, + 0.05587639231267605, + -0.7483014161019178, + -0.30898261206110567, + -0.38127516120870025, + 0.1384076616889497, + -0.6846955096967098, + -0.0066530170357733676, + -0.8252185765403234, + -0.7582631551842692, + -0.512598412424636, + 0.041862200682142525, + -0.4737933503372272, + -0.7810149373993973, + -0.7042850298400287, + 0.12415719422643745, + -0.7042846980069655, + -0.6278101551448355, + 0.05665944309564752, + -0.5643561329005747, + -0.15897167632631692, + 0.0021023148356213994, + -0.1494705251166778, + -0.8459273803838706, + -0.41614262066744423, + -0.3877091515881323, + -0.42574891329222797, + -0.6277996332377597, + 0.040926325587696044, + -0.07760763145788119, + -0.31052476430653553, + -0.47778435423368937, + -0.11003828411238004, + -0.48482787275681527, + -0.4007649329563858, + -0.03622157497118972, + -0.46392361865340215, + -0.6900529388724768, + -0.20102045416729641, + -0.0214733504564093, + -0.4535088436521152, + -0.7964541588989047, + -0.5562223540635491, + 0.0254479171045372, + -0.4327906512116241, + -0.7439354676668881, + -0.554508842704198, + -0.8208351352942359, + -0.20652716766540646, + -0.005670276129035479, + -0.0086180221187242, + -0.1823339324086769, + -0.2058461772247896, + -0.22289182958526277, + -0.19270972872320014, + -0.3044924661300934, + -0.7977149034222819, + -0.2809589640252136, + 0.09467745590921317, + -0.3481207021692667, + 0.02426849051628832, + -0.5698453088926798, + -0.2996550267891729, + -0.5614259580833327, + -0.7978568016557627, + -0.4767702722234425, + -0.3551501621896636, + -0.08564452734116479, + 0.07580920975073169, + -0.6476609294785125, + -0.4096093391060578, + -0.38799796559263455, + -0.7119973009560867, + 0.12829817517564146, + -0.001868236132009149, + -0.28438289667895156, + -0.512848646985654, + -0.025614702733640193, + -0.5112396992878936, + 0.0042052579452538374, + -0.7392913683818817, + 0.06763586680743272, + 0.0450211175782238, + -0.26869056294759175, + -0.4441771001031307, + 0.12238512677126301, + -0.5290719500302239, + 0.07022684671410329, + -0.659767655033643, + -0.47547484764407805, + -0.7493925907840071, + -0.044251521623627554, + -0.5281178164548923, + -0.635896760240295, + -0.04422972456248242, + -0.16010833965638593, + -0.7485150994430243, + -0.012539568823251912, + -0.8259507352672489, + -0.5733854983632278, + -0.20297344719068688, + -0.3190397181610155, + -0.06361348936100619, + -0.3789647065621272, + -0.024092594001647982, + -0.20418738658948732, + -0.1032362254290673, + 0.08086805654967577, + -0.7411037347238599, + -0.6588426656659186, + -0.21295675559909122, + -0.8437790643144572, + -0.2404975236971998, + -0.46955746226789713, + -0.649479296744897, + -0.7048558087206263, + 0.022759303823558952, + 0.036734741759096634, + -0.5788648329242216, + -0.3291892174474902, + -0.2622459058229688, + -0.5346053374524959, + -0.7689803342079593, + -0.18746721679500655, + -0.514266759739652, + -0.08442097046069774, + -0.6439615855350065, + 0.026735058060245565, + -0.4500790915791221, + -0.6622638185167377, + -0.06941930774236915, + -0.6206026338846571, + -0.6396115876782917, + 0.08452881064115003, + -0.04859986678203976, + -0.023304172095511277, + 0.13252657321252004, + -0.5920834245443387, + -0.5276504366956309, + -0.5835385616267452, + -0.40359215988349556, + -0.309611369711704, + 0.03644858941713991, + -0.08532699963190693, + -0.665410253383367, + -0.4838645079130032, + -0.08809811970822934, + -0.6943471419552241, + -0.7898527393184713, + -0.10497692891662147, + -0.03231755938591607, + -0.3937791236959808, + -0.7036862681276121, + -0.2295844473871117, + -0.28879445210431887, + -0.5391194971922031, + -0.22459460791175845, + -0.5737097699505598, + -0.4348796175153112, + 0.14890718721023843, + 0.1373321142058156, + -0.3798556208545622, + -0.627488702015807, + -0.7351097480329533, + -0.13840067666399436, + -0.7050640137108345, + -0.1359247389350312, + -0.06453872939278915, + -0.7845744192396136, + -0.17960571367687983, + -0.26963016760606096, + 0.1399296744983336, + -0.1990121191123605, + -0.44191330478432694, + -0.31652183769294995, + -0.8476601150622617, + -0.27799154563754647, + 0.061478915640619025, + -0.7667478220659502, + -0.5220489780940574, + -0.04209286031202231, + 0.12881352433676463, + -0.6481925964088606, + -0.5598324017873102, + -0.6668765680425398, + -0.45024387350774153, + -0.17313118411969997, + -0.8307873143426076, + -0.7111828168226819, + -0.3386629660458539, + -0.3676566127996546, + -0.4222223490517127, + -0.29753804053855315, + -0.031433832038533116, + -0.5589594133647668, + -0.7433347880565434, + -0.6432385907632963, + -0.5177969114896206, + -0.07666981137857654, + -0.07309502160110493, + -0.018952741003969598, + -0.29435414967646145, + -0.18305669104603262, + 0.09678302378672543, + -0.5436710669286654, + -0.2676063090122345, + -0.08370794308503104, + -0.6396983199832795, + -0.7719544149203189, + -0.5352822894378475, + -0.027913845031854234, + -0.7963398750394229, + -0.1470028887012369, + -0.8166642196953232, + -0.015680693767361253, + -0.7699399728408527, + -0.10369306911188803, + 0.0956505745647872, + 0.13202442333156428, + -0.2176389004693765, + -0.27510757767035, + -0.3009303523487603, + 0.07912720065594192, + -0.5238621660578985, + -0.5300506582728346, + 0.012093640188585497, + -0.33926763728443676, + -0.7385392533235702, + 0.08740779654328645, + -0.09059460883107862, + -0.08206729738853946, + -0.06674259618931955, + -0.5690441751713298, + -0.7594653127070853, + -0.46123474715118323, + -0.648990315584158, + -0.6436100754683359, + 0.14881221208549278, + -0.650103790089194, + -0.47601892350879704, + -0.006606058638064294, + -0.4589902556904866, + -0.6021795732536218, + -0.44861390535200885, + -0.6553181084342916, + -0.5930101995459298, + -0.846081052749962, + 0.01255910670899274, + -0.7843148519445523, + -0.25710917378728204, + -0.6003818930777116, + -0.013018134550032312, + 0.07396237305354747, + -0.6899448667367232, + -0.8352649666979453, + -0.4802371833341508, + -0.5470035057398736, + -0.8125878771478832, + -0.09934898883379273, + -0.06695876094941577, + -0.5531246898126702, + -0.6368475164982538, + -0.8271745068471846, + -0.06842906548720706, + -0.05433351350312143, + 0.12966590694306324, + -0.4653336106593741, + -0.3787507892536875, + -0.7050541947173378, + -0.644490245484276, + -0.5791720145652703, + -0.7260637394440659, + -0.017153079812861072, + -0.8111671749108853, + -0.1318339064872842, + -0.497535096951834, + -0.2818447413945271, + -0.44160145929499756, + -0.048888610373689634, + 0.04909378907771855, + -0.5053567232388085, + -0.0028077483930766256, + -0.26302340639094346, + 0.06381110042571836, + -0.5920149993870298, + -0.5372499328953867, + 0.10051616610083092, + 0.04828398710840731, + -0.7882882952901339, + -0.6183133403359931, + 0.06814254414873389, + -0.5960511027067538, + -0.5727654138438911, + -0.6410911502512967, + -0.13925410563537755, + 0.04959186801682858, + -0.5965346134364087, + -0.05400679102188677, + -0.30989525348732805, + -0.8432711460651909, + 0.13422567359114457, + -0.25056690001049553, + -0.08552486406144377, + -0.5616100224025868, + -0.7077280439406898, + -0.421153365591828, + -0.7633025734088207, + -0.26928961364843484, + -0.7929975333132713, + 0.004762074642306824, + -0.7406201465387858, + -0.7255902085876781, + -0.23369415068668675, + -0.21421650309848728, + -0.025938609080174757, + -0.5772292406676616, + -0.0560059650892184, + -0.15019202791378883, + -0.13281248557966352, + -0.015541606069033764, + -0.3219434757091444, + -0.8101132712629177, + -0.46085157703395124, + -0.4037581068807684, + -0.7083295258180194, + -0.46446720508099876, + -0.0031538946220697195, + -0.19890727606010628, + -0.2846070175189398, + -0.05276046432685921, + -0.3313311286880769, + -0.5041203355353365, + -0.16601386028629384, + -0.15551199793339587, + -0.6396431567972218, + -0.29633027791300715, + -0.46637741290808243, + -0.3229370251367458, + 0.02876548749115393, + -0.2662917424396969, + -0.021388554396503556, + -0.1716014015787164, + -0.6139713659417467, + 0.09616815840724191, + -0.5510794836573921, + 0.07487267148198906, + 0.09729574409449993, + -0.47358033383235737, + 0.035165092508285145, + -0.4686367021160306, + -0.21570965131331998, + -0.41278556565631563, + -0.609252011957097, + -0.6560676229234221, + 0.11435786146037141, + -0.21146058357851816, + -0.7457824180421856, + -0.4588073093456174, + -0.13365970234513247, + -0.6878142253234552, + -0.330087822927422, + -0.7164017903685913, + -0.6091981236625836, + -0.7749796194045582, + -0.23325210144974284, + -0.5200334254837455, + -0.15140181862231994, + -0.7367380528357261, + -0.7449258113072891, + -0.29828892982213806, + -0.029160333984465048, + -0.5456087031331589, + -0.8149733361536505, + -0.34751820770177266, + -0.057508775102902865, + -0.5497351165951102, + -0.22525449195576275, + -0.387378300434677, + -0.0933147138224878, + -0.4037134528856269, + -0.3391206437646985, + 0.003213567721257915, + -0.42651765658720564, + 0.07092362443486355, + -0.789450743238046, + 0.03368460112622551, + -0.7089612918561675, + -0.3029070788931363, + -0.48887654290684507, + 0.06424352190866267, + -0.24874396476659777, + -0.05609706480101462, + -0.8449484985740997, + -0.337952412171585, + -0.6084634066579231, + -0.3437042365785069, + -0.6956568966276263, + -0.00621760863633225, + -0.2195517354117159, + -0.5206980547646531, + 0.10621946087823664, + -0.026186900333075247, + -0.42114187418290233, + -0.11137599171634693, + -0.6213156849138275, + -0.8172962158927544, + -0.73280903437772, + -0.3207457208260899, + -0.40859739573418935, + -0.6468201494181701, + 0.13253916929677678, + -0.17092681347804228, + -0.39713921627007037, + -0.10934842031287029, + -0.4589545221584603, + -0.8465092652103895, + -0.22026537354790543, + -0.48483521552839065, + -0.7618021421138951, + -0.11843846332707686, + -0.7629809294883945, + -0.6252041515481269, + -0.3627724632412581, + 0.1280612743690991, + -0.7492961036506448, + -0.5104693012324315, + -0.6372409873420348, + -0.5578714200385235, + -0.3831646174494506, + -0.5390587145520969, + -0.5255384733152249, + -0.7931274396991327, + -0.6909092551407551, + -0.053814358004333984, + -0.4400697363702087, + -0.2488895767653977, + -0.38038792049549075, + -0.5657638409064298, + -0.389011196621876, + 0.1255430283438702, + -0.5690328479847301, + -0.49946680984345865, + -0.2511588385790745, + -0.7537580148451498, + -0.002410598964414312, + -0.8208830951384792, + -0.10897111363102696, + -0.7593646233473362, + -0.32549536426848613, + -0.04080449767404215, + -0.2178517836254954, + -0.014943274892397995, + -0.1647602266274414, + -0.6631319602492703, + -0.5937151481174295, + -0.4482803287721322, + 0.07639233645142585, + -0.8283341646552983, + -0.03510549886506742, + -0.28770372827084034, + -0.7247932162499249, + -0.34537288113569753, + -0.7081335067175998, + -0.5512689753780169, + -0.33851333759944324, + -0.3405141524333236, + -0.5746920416554218, + 0.05690870726389052, + -0.42170461182965685, + -0.2447825401652517, + -0.40671169019605025, + -0.20770613662801451, + -0.10793055309784971, + -0.04461042385749814, + -0.7803715904214588, + -0.2366124899588965, + -0.5521041254181203, + -0.21709356484677111, + -0.10355989002576382, + -0.3026556182271989, + -0.8383637406173768, + -0.5912251216850485, + -0.6580180630357222, + -0.30045007072206065, + 0.12809548153876593, + 0.07723892270633115, + -0.7920922807876208, + -0.12690656900294517, + -0.4773627030646605, + -0.03158619649316341, + -0.2221978446655687, + 0.08304843480480928, + -0.17123496003544814, + -0.3623073839899417, + -0.1472606645122706, + -0.5052348229529262, + -0.2440921317868734, + -0.8182637415612889, + -0.11766350405689907, + -0.6783491479599522, + -0.7867983159504365, + -0.15328214135404394, + -0.6702293221202954, + -0.7460098731200677, + -0.38825448046469485, + 0.04700934801911172, + -0.6138590183943237, + -0.2676736668549684, + -0.2004836928617122, + -0.07325196275113266, + -0.3481754235344867, + -0.19172184009941273, + -0.3739245144096042, + -0.08971162335042304, + -0.034702273020176255, + 0.13781493556267888, + -0.1377885317023544, + -0.40285984813377973, + -0.031116810443313048, + -0.6500973326642018, + -0.6404628277267048, + -0.6410461810041546, + -0.3397698574608752, + -0.5798382097503316, + -0.5271966303901419, + -0.20899030089093162, + -0.7489515573018204, + -0.41740133424163833, + 0.03588534149414002, + -0.3687973294746385, + 0.07753881653774553, + -0.1896868017050617, + -0.30520817295673675, + -0.5561514575920767, + -0.8416043693032593, + -0.5271841353842509, + 0.14588716721864015, + -0.6934023143372368, + -0.7655007956315892, + -0.09251276580520307, + 0.13470197459017164, + -0.40721588751596255, + -0.1639485432455876, + -0.4321469021422221, + -0.7021914345803248, + -0.426207300761075, + -0.06527682208317043, + -0.7088804647335767, + -0.8252879905191866, + -0.3835121739472214, + -0.1639395825087323, + -0.16627222054627844, + 0.05642726114182184, + 0.033660287176471404, + -0.452136774248968, + -0.3542671145718839, + -0.18793288621644366, + -0.8270671301942581, + -0.04214570466803813, + 0.010232224874266005, + -0.18697111024356894, + -0.30559220920272456, + -0.18007459338970533, + -0.24798601785987318, + -0.8386904018759503, + -0.6851460151768203, + -0.014249800337294283, + -0.848574457505962, + 0.03261505838259682, + -0.19168047234195384, + -0.7286136471988861, + -0.5605155047522887, + -0.4961041158923565, + -0.7085078080059258, + -0.7816845893389932, + -0.4299882207672856, + 0.14555888104699866, + -0.800825939725097, + -0.7429374083367221, + 0.04871935058955634, + -0.06599830867327339, + 0.127282718125717, + -0.7215326151247802, + 0.01887765710185252, + 0.06871003485863647, + -0.5185101457097361, + -0.5319254465875851, + -0.27086515554116575, + -0.00907740097950649, + -0.09685980897250546, + -0.5451396091231656, + -0.06466684177438564, + -0.5150847472739152, + -0.08338981304987159, + 0.05593965086015229, + -0.14325737341339462, + -0.5008823074305239, + -0.16031694919455242, + -0.5506086866012467, + -0.7053012480080276, + -0.05685057635865376, + -0.3452943402716794, + -0.6878756730647484, + -0.19294876727496568, + -0.508817660367662, + -0.10405915202833516, + -0.03144050489509398, + -0.8355114366396881, + -0.234697547068057, + -0.08446643820957955, + -0.6898596747176593, + -0.26252039688780426, + -0.2591338032314453, + -0.7538214880858057, + -0.8062554343372281, + -0.762121971332669, + -0.13710915515699884, + -0.7273357815415075, + -0.4215543701336737, + -0.6180312825419068, + -0.24535559690723652, + -0.8189151600589551, + -0.5096317235700988, + -0.8179787371700491, + -0.7839768279960235, + 0.053335800893766105, + -0.7695583040339846, + -0.7603522133506345, + -0.42875797194530346, + -0.24511758876196332, + -0.6024953665725995, + 0.08255990360718202, + -0.26704546352813296, + -0.33834991629187505, + -0.7963537130879973, + -0.6465373336325747, + -0.673923720836377, + -0.049834886511425314, + -0.16620402196442907, + -0.21113499604065544, + -0.7284870931911087, + -0.28047390935381666, + -0.4799078375270466, + -0.8118175921254746, + -0.4552709995525979, + -0.46030430671943856, + -0.6094630640270903, + -0.7377136732273095, + -0.10489718100280432, + -0.17349661401405236, + 0.08807456152824988, + -0.43100631230585834, + -0.6919576371273333, + -0.1638896195326972, + -0.760277828644637, + 0.135901837574943, + -0.6140748111525609, + -0.08621295968521858, + -0.18538059796032258, + -0.5875972120016548, + -0.0037870097367251887, + -0.12528193428568524, + -0.44837609571915055, + -0.65686418515102, + -0.4486021845839369, + -0.18617741013269318, + -0.42250362681657766, + -0.7053707871062632, + -0.12462599341330427, + -0.48645220322574784, + -0.05449139571074835, + -0.5302103002103483, + -0.7942225708116162, + -0.2871914938833664, + 0.14303010479749467, + -0.022049092128240466, + 0.12064502616714212, + 0.03632986390981208, + -0.4739584744295363, + -0.5851816199473117, + -0.7652367783084646, + 0.025941009645057966, + -0.30673336750841074, + -0.08711096681139596, + -0.7257712234125795, + -0.6235248349410235, + -0.11475596653730136, + -0.5241756252305891, + -0.6672756247014158, + 0.08883298324368771, + -0.8479201342726029, + -0.02745436685984548, + -0.18404192800039887, + -0.4666611196256666, + -0.4451698691812669, + -0.45245130162494585, + -0.14889175034329294, + -0.40736557684676267, + -0.6713254911817345, + 0.030238414559122018, + -0.32249659200483605, + -0.6216483627516272, + -0.40475144382394523, + -0.3531021977904353, + 0.004188573993917255, + 0.09344756008953126, + -0.5189976643405417, + -0.5546938284304412, + -0.565370765693646, + -0.4557291074421335, + -0.5114439618108366, + -0.8309561243143669, + -0.4825253915225112, + -0.41776936111018537, + -0.3660301921879076, + -0.6739306088850735, + -0.03675027067039549, + -0.05958447346969298, + -0.0852883097504672, + -0.8299356778064536, + -0.35788797476165707, + -0.6670620210318243, + -0.7559043399783024, + 0.0927296099699868, + -0.7450412248650483, + -0.17652778008503944, + -0.2853610291287719, + 0.04287911068080874, + 0.08471044241890835, + -0.7760328954285296, + -0.1662629073496651, + -0.35045531785823264, + -0.45940688650925826, + -0.07993747490909275, + -0.09666910750025481, + -0.8334041036903945, + -0.704468869294401, + -0.48996404302315194, + -0.252832642713822, + 0.013403691591858724, + 0.13335335359931944, + -0.03511850066155542, + -0.823471675939736, + -0.5119597780537479, + 0.07342921648829359, + -0.7850095721230085, + -0.47796768216191093, + -0.11584335025269477, + -0.844575866955248, + -0.6157362696977748, + -0.5752401349462111, + -0.3944279741106689, + -0.4910634039747076, + -0.651660247511469, + -0.3659574097344896, + 0.13881486727624703, + -0.5076917172463307, + -0.027417560175299616, + -0.5021346700829972, + -0.7116775166336897, + -0.7215273381659064, + -0.363147961726689, + 0.038531222574965884, + -0.7466777936030135, + 0.11321309115076439, + -0.22374394805384834, + -0.12725554219979862, + -0.826937882289624, + 0.11790869898196332, + 0.1063372263686938, + -0.7263231875244002, + -0.5914775832729688, + -0.7930284633795608, + -0.4114428784456813, + 0.131608637519387, + -0.34999043029042304, + -0.14717099517327703, + -0.07344998638864841, + -0.5777606225357896, + -0.31365040459516524, + -0.08426809808795921, + -0.6144380728461057, + 0.051287305832439234, + -0.6020145668290948, + -0.05996729957138014, + -0.622584284157689, + -0.380070349314803, + -0.051739941979250914, + -0.8005710947388317, + -0.5215787880662368, + -0.8363396676854308, + -0.022816795988159222, + 0.06669046512995991, + -0.6742837719138217, + 0.08819563642532169, + -0.5426230538231573, + 0.14006706116234202, + -0.511992613928357, + 0.007247461919215881, + -0.8059802504662161, + -0.7164827632306237, + -0.13194612866300137, + -0.30765766485577983, + -0.07263003935253298, + -0.5524514524939899, + -0.735158899771241, + -0.24483908538070553, + 0.1418166797630993, + -0.19309454199743004, + -0.008331569899094338, + -0.5823626923630354, + -0.4942471502473691, + 0.10687204390322047, + -0.790535035989626, + 0.06733455005317956, + -0.08232221382660887, + 0.1475344890799425, + -0.5884291846395933, + 0.1423569925224757, + 0.12090778940284375, + -0.3112345677044428, + -0.4496664852518209, + 0.028412037630291764, + -0.30152415634958607, + 0.012978799566959576, + 0.052747850862691514, + -0.6466342472530312, + -0.7643590459710212, + -0.29767282690409613, + -0.4686037174662641, + 0.10962304995752226, + -0.02060560225301311, + -0.8163857921345572, + -0.20724388987880404, + -0.8171147823993462, + -0.7316489794739773, + 0.10716038241458015, + -0.434589749878943, + 0.05744965534475566, + -0.5780802175477215, + -0.7905363794605688, + 0.10470502352040523, + -0.293167294106948, + -0.5665546359630905, + -0.2834694410684405, + -0.7354323491862764, + -0.7983537003036734, + -0.31195294548559105, + -0.8040535959441045, + -0.1210491528052825, + -0.709098794527709, + -0.15551667033943062, + -0.5608126975519843, + -0.24008775303446883, + -0.615788590097244, + -0.0333328980470986, + -0.5348604746034185, + -0.25379004748656364, + 0.09713214044662222, + 0.04221403091188802, + -0.20900334068532045, + -0.007961860183882563, + -0.5691641861780663, + -0.7744171600220252, + -0.597088509742645, + -0.16520041449761502, + -0.8293673557517216, + -0.822022373677012, + 0.004874525288066089, + 0.11036351197767946, + -0.5515867295765986, + -0.31082861523375305, + -0.03151698192726926, + -0.6691258940610982, + 0.0059017657359209386, + -0.6620641753378309, + -0.33604826740990956, + -0.6560684768676777, + -0.12839875698772263, + -0.8438018618817815, + -0.5468842987903371, + -0.01325390151845729, + -0.34161232507591743, + -0.4383171266473295, + -0.5872625003769556, + -0.5141020441644966, + -0.49956692993031543, + -0.6551696096527613, + -0.5004474588679907, + -0.6713115918745693, + -0.020498097795519477, + -0.1868235190241503, + -0.8200857974031592, + -0.6188454851331009, + -0.5351456005108004, + -0.14829108678335634, + -0.34433861146934763, + -0.7200558795593922, + -0.01258075428155514, + -0.5790203363730331, + -0.6716302977279233, + -0.5710898547170644, + -0.2644081316954021, + 0.06652058350460088, + -0.01975085781251751, + -0.41868849633733596, + -0.4935100841260877, + -0.014863275508144369, + 0.0012246697887526858, + -0.8179710735848532, + -0.12960101411755054, + 0.021198903309533224, + -0.4451376951479787, + -0.11392139214450436, + -0.3950241770593913, + -0.790623310144062, + -0.052415958412048824, + -0.2893383193598362, + -0.7334765925215342, + -0.29679139164392865, + -0.718618885128444, + -0.8202033992957426, + -0.05946171299098202, + -0.45304210884516305, + -0.23546529550428996, + -0.5859385488636518, + -0.41913448621934474, + -0.7928228007477428, + -0.40628202034657535, + -0.6785281007178732, + -0.6056850997296036, + 0.06661785149480826, + -0.45622101982404484, + -0.641168621995304, + -0.7108135174935292, + -0.1407442733291362, + -0.6354858347691159, + -0.003264128225762608, + -0.22273705145281286, + -0.020888704267435942, + -0.7319517838979761, + -0.1955154628346828, + -0.7758540420289459, + -0.7180176371466986, + 0.0685345641423698, + -0.5258876751677419, + -0.40064128593172826, + -0.7812155837789798, + -0.39804236948338273, + -0.6123510347716297, + -0.45339482969405487, + 0.0853974045325464, + -0.7306844457266825, + 0.06611473987127181, + -0.6966577486363884, + -0.3246509815937496, + -0.8067794966082463, + -0.8436830633665008, + -0.8148695663183029, + -0.011803216679459605, + 0.12606280022466743, + -0.35236899061725585, + -0.3817718932916437, + -0.37347844868821367, + 0.12181259468255223, + 0.13631786196582774, + -0.16246846379119995, + -0.4534986956565576, + -0.4564445725482233, + -0.46834848159370257, + -0.23584322931041424, + -0.12015840200162164, + -0.2093020121552115, + -0.4279396133495658, + -0.5455112774601025, + 0.0517781207548107, + -0.333586425969185, + -0.014442785901263688, + -0.3538724127527733, + -0.6651496045751568, + -0.40532551640395764, + 0.02137302357280324, + -0.09962523414079216, + 0.05172042498231999, + 0.09269521855378438, + -0.43373361277752703, + -0.5757819703715841, + 0.10632914953376615, + -0.8303501017206283, + -0.5417549442270488, + -0.3154696230933651, + -0.5071065643790316, + -0.4538216364880756, + -0.6146296928455786, + -0.8169697372528096, + -0.8244670577371055, + -0.8045971989116854, + -0.7800390844867973, + -0.038188446535404985, + 0.014938516215409647, + -0.5774579786021958, + -0.7092138371855301, + -0.16808515831512005, + 0.010459715211356357, + 0.1324467582322275, + -0.17278311406665825, + -0.2114655565897442, + 0.07582088342339244, + -0.24327049165979386, + -0.5756900896625693, + -0.6696348748769024, + -0.2660155286816519, + -0.09456084994643521, + -0.5142947662570606, + 0.046329916933946946, + -0.8207296421174183, + -0.33793564789148256, + -0.1871741308124505, + -1.370803584761493E-4, + -0.7507567508878064, + 0.019101710165524532, + -0.10755831756842782, + -0.6058596742441995, + -0.731601993476434, + 0.04062191945345117, + -0.48490297961960366, + 0.024833634758797518, + -0.561061053032622, + -0.021236448305992695, + -0.41111836116268113, + -0.6062751386529784, + -0.36624471961457555, + -0.725759319271607, + -3.3361567873946285E-4, + -0.28644928116551527, + -0.8069617963963943, + -0.03452485686437057, + -0.22883599687852763, + -0.7217145440965572, + -0.3731096688368431, + -0.7446957542876048, + -0.39777337747705754, + 0.13617700110751596, + -0.011019859693170875, + -0.7979997225592075, + -0.5262516216531778, + -0.13971548660953448, + -0.36040328340530764, + -0.02807167220666007, + -0.4365906864799928, + -0.5506507647860757, + -0.682662270865762, + -0.13399886235644243, + -0.33037945633208476, + -0.1757084421115983, + -0.2611086021217387, + -0.06213651285241617, + -0.11345752098490114, + 0.11739734345226827, + -0.5456106683082704, + -0.07813269272285817, + -0.3269018149783177, + -0.7696231508383642, + -0.638651021352351, + -0.5491933668725989, + 0.11326405933917638, + 0.07407082323578473, + -0.3574703324479202, + -0.0510168823875935, + -0.4757369036202991, + -0.6541094872471194, + -0.09252341744393244, + -0.551240432714712, + 0.03595026605184781, + -0.8234114930563482, + 0.140794576038207, + -0.8000135690215013, + -0.5309130545637473, + 0.14795693023624212, + -0.17463682325380236, + 0.11587162756792002, + -0.21110142423412614, + 0.05747833304638239, + -0.2372522990686491, + -0.13409273367999175, + -0.21073696536567843, + -0.5427797756867125, + -0.4421354561999952, + -0.10416822527844705, + -0.2587329211789926, + -0.2256621938379424, + -0.25678458542191995, + -0.7115834116185196, + 0.07414812616565558, + -0.7593382071508293, + -0.39082985143205934, + -0.5088908565794483, + -0.7897339427475455, + -0.19448981397183984, + -0.6215423046916588, + -0.05739129789595898, + -0.2359691668397048, + -0.5775494289374067, + -0.2142220641541973, + 0.07418152967735947, + -0.45625745424351727, + -0.1516637694274915, + 0.14238083149901204, + -0.31007335343587694, + -0.25872228163352773, + -0.3227085356910221, + -0.02257331693002007, + -0.3519352052811994, + -0.20978354439537017, + -0.6853753499630378, + -0.03971765728643473, + -0.21272268571568786, + -0.18875250239017738, + -0.04542616771673835, + -0.5419957949872758, + -0.7170587491599227, + -0.0199372033722669, + -0.5483825959571704, + -0.09003421203817197, + -0.49834375147298166, + -0.4842411163988252, + -0.20924974913373606, + -0.04388420182315522, + -0.5583905713849984, + -0.4656368424960388, + -0.3516067543753549, + -0.324432855998403, + -0.5745508338441114, + -0.25185485928866513, + -0.2148520348857873, + -0.44596374869291955, + -0.11776094292960526, + -0.42186671690116767, + -0.3166099992500174, + -0.5668246107149165, + -0.6186403101429789, + -0.6852236425056784, + -0.653121683633545, + -0.5664545173150556, + -0.3603036296532961, + -0.4377188889456651, + -0.8442449595840767, + -0.7463053973984138, + -0.35876161910807475, + -0.1910138927471785, + -0.7420416023899871, + -0.5068786051271127, + 0.05833911919959933, + -0.1526096609239389, + -0.8028534131075656, + -0.15790535271221118, + -0.7959160761258292, + -0.4843105346580133, + 0.06865406263016272, + -0.1267308353099441, + -0.4582573479882136, + -0.0513917244250327, + -0.030084499743815662, + -0.13377692022253285, + -0.09394479461240646, + -0.5715749306056475, + 0.13257420431764988, + -0.6471871926838013, + -0.4570559939478359, + -0.4261997546079012, + -0.2241185417565128, + -0.3665291071710453, + -0.24142811486510452, + -0.04451005172034683, + -0.28115247148930167, + -0.3993711052260507, + -0.3389930771416255, + -0.4549492227948993, + 0.025344593748166, + -0.11594006717775607, + -0.3484507814164882, + -0.541160974428831, + -0.5509584981920645, + -0.43077764974915994, + -0.22137414610707162, + -0.32237529452228153, + -0.46693162554783263, + -0.1820191835738746, + -0.7372759724982146, + -0.7604302570419565, + -0.1953019939035162, + -0.39166017961752236, + -0.07375579219532358, + -0.7189756930453275, + -0.3121401170501944, + -0.7020749616247733, + -0.15573058797882566, + -0.6012390855301183, + -0.6135798004389081, + -0.7113739264524611, + 0.009062336990413367, + -0.7108249714155999, + -0.17876056654210626, + -0.21805790212193787, + -0.805831546364164, + -0.4537288626533897, + -0.24023330049029712, + -0.7145039263127103, + 0.09116810621594928, + -0.2975683533696428, + -0.686692969658746, + 0.12942506967258405, + -0.18163676213671132, + -0.2898128861108151, + -0.812992022687894, + -0.5715878455346186, + 0.01174080024903501, + -0.36484696925834686, + 0.13985918203601522, + -0.073246862895611, + -0.18843197197695405, + -0.8115334282852075, + -0.6758597077816675, + -0.2207319388359208, + -0.06019314638620821, + -0.20144590512640925, + -0.8374644702132786, + 0.06704188342215767, + -0.13237009851168635, + -0.4480888380077049, + -0.1348604603423027, + -0.4362840372184023, + -0.8436039812113784, + -0.4488771487921988, + -0.69274914033107, + -0.18243351585428824, + -0.32965884612094665, + -0.010247647107463953, + -0.6774965178251602, + -0.06857305574662453, + 0.09734094229876455, + -0.42671895335967297, + -0.506679762428502, + -0.08354604297025348, + -0.5125573312826506, + -0.02664545339933777, + -0.5128074450270317, + 0.0899563340887739, + -0.6432531564192443, + -0.1616350599356815, + -0.6866951163795185, + -0.038361669132507936, + -0.0275046264198473, + -0.7449335628033285, + -0.5447974382718317, + -0.10633344299907987, + -0.684889608300245, + -0.05217595260890717, + -0.01862675035967043, + -0.10915181398056062, + -0.6866120210331597, + -0.753825567760996, + -0.22416561486476194, + -0.8424977791995467, + -0.6133813675340988, + -0.561452085863205, + 0.11004838953478491, + -0.35620103992070323, + 0.029233899534198637, + -0.49969339376422933, + -0.18146582536645084, + 0.03587740943023865, + -0.2217951970171853, + -0.4955512601773771, + 0.04294732803241863, + -0.5618886885605009, + -0.435891567098577, + -0.15359490938171783, + -0.5866680876249675, + -0.019262997871530185, + -0.2868383386254453, + -0.6518506540528158, + -0.721241619794722, + -0.15446509642370687, + -0.7872814034795778, + -0.7365936793194702, + -0.7815038486869323, + -0.7776479408701114, + -0.16568481622642617, + -0.2668758333232446, + -0.6921274311395799, + -0.07699273225087733, + -0.06996324594937431, + -0.04073818377339433, + -0.5498512690813413, + -0.7547971305396316, + -0.09295766040497355, + 0.061786357144993254, + 0.12071567661861093, + -0.7098078125676034, + -0.06781877822705085, + -0.3358779909477607, + -0.3573509651609519, + -0.7548795823885651, + -0.5450765089762177, + -0.35877227298151226, + -0.5648879810368126, + 0.09099856219248659, + -0.02274342639486604, + -0.009552211183050163, + -0.4675390698949948, + 0.13394530604619226, + -0.44976595868115643, + -0.08842939699705687, + -0.487046940861376, + -0.8346214560474606, + 0.013228169241433774, + -0.4654275560219344, + -0.2721489331041985, + -0.303674655399374, + -0.13347714508973185, + -0.3283949554360778, + -0.4738694614930589, + -0.07902053858435654, + -0.029086614353259654, + -0.32250233015138796, + 0.13275824626485122, + 0.14824526787056158, + -0.7371431964290068, + -0.27450343659653653, + -0.7587597613935473, + -0.38747730293624366, + -0.02130674041334113, + -0.022646182964598305, + -0.4528614969875032, + -0.007317637084846118, + 0.08745120964656727, + 0.08411362435613245, + 0.039936384113322565, + -0.3848207855519852, + -0.4287877194130679, + -0.8186891754477776, + 0.13133250333791557, + -0.6842845609970276, + -0.41555648250055927, + -0.40241835531686027, + -0.09999828405761835, + 0.01430438079768237, + -0.7894288353787453, + -0.45210096467230965, + -0.06025053124661073, + -0.3550208961182564, + -0.2933057928928351, + -0.32196607584553216, + -0.2526483755944813, + -0.5575698452824486, + -0.5617136791870398, + 0.09646435598320258, + -0.5904364471374752, + -0.6375984378399646, + -0.5534753596195094, + -0.1672568074406111, + 0.10618340699540518, + -0.7404704942424649, + -0.2913665556539289, + -0.5250498413774909, + 0.1191946274177369, + 0.09830153656120055, + -0.8394920301032467, + -0.4413680383268956, + -0.5902050992617089, + -0.09139996366110847, + 0.014236349574259677, + -0.03144101546275424, + -0.17738577464961325, + -0.46136104877778616, + -0.7040920770532524, + -0.8181333398738032, + -0.7108770549992763, + -0.12484550883572343, + -0.14347176587007815, + -0.7432923909176044, + -0.08685884875928018, + -0.6516855600601485, + -0.2177793655677116, + -0.08107295961321337, + -0.27533365166323587, + -0.031126011689453392, + -0.22198789112771045, + -0.6394447860162924, + -0.737611734438143, + -0.4081288018103943, + -0.3910296192042468, + -0.12210388194327026, + -0.15234476121225504, + -0.17022560050893054, + -0.14801389089940054, + -0.8160923963357939, + 0.05700455493834222, + -0.12456341798847037, + -0.014572164776100904, + -0.3849844458009629, + -0.5991491301175329, + -0.172145475908968, + -0.6728934344721609, + -0.5403455655176642, + -0.726751231845886, + -0.14278459221623496, + -0.7105802977106512, + -0.7256786962374377, + -0.6875155082287787, + -0.20680480129541845, + -0.5893020376146376, + -0.7314211791556621, + -0.34108796753694015, + -0.03166824789814682, + -0.28704859615057554, + -0.011459845803236446, + -0.6011018831716665, + -0.7458672750152878, + -0.5404246112650026, + -0.6926929429652446, + -0.6834495649630311, + -0.3860170633636394, + 0.027327096226133385, + -0.12149714017541802, + -0.25306412992219374, + -0.48123878981176477, + 0.007153152213729919, + -0.5998013833152619, + -0.34158048926538265, + 0.08972038089107448, + 0.14090389006197668, + -0.790793267769254, + -0.40453963465316867, + -0.3682803329895669, + -0.7799167111781504, + -0.07723810597990632, + -0.6629015231131091, + -0.5867542429087744, + -0.6096568119986024, + -0.3904362150530842, + 0.13907398957281414, + -0.735746748477629, + -0.771297279064437, + 0.00956923886668759, + -0.3832213054222678, + -0.4824601102772278, + -0.395417348041383, + 0.11666278351958304, + -0.7079871084176744, + -0.5792576267662071, + -0.18446050268549496, + -0.6333108195420066, + -0.00861200472225343, + -0.49320536202035337, + -0.02233340123570693, + -0.19438421175864884, + -0.7728711371778177, + -0.53203616710262, + -0.5395997782311741, + 0.11430137039517019, + -0.37673171544568923, + 0.11482755756493379, + -0.28567624807371284, + -0.30238002914310336, + -0.001378129353615809, + -0.6613546384669706, + 0.1257419206092123, + -0.646085917586712, + -0.600308132977752, + -0.6049560125328914, + -0.14829369065021247, + -0.8248694979303236, + 0.08729189272716464, + -0.3985793790343806, + -0.2761296861993341, + -0.47990624052859254, + -0.6006524342422027, + -0.5346302383460289, + -0.10559427783450825, + -0.48154152376383397, + -0.25839605135000254, + -0.31271004280214076, + -0.4741833796004684, + -0.7783137719824098, + -0.5317826171219443, + -0.4626347250446876, + -0.804307860120471, + -0.009683453033165201, + -0.7039670831192059, + 0.019593383862373415, + 0.08951970321356673, + -0.4863275185031955, + -0.05944367815271545, + 0.11159280292308715, + 0.06384634622445162, + -0.7055208957134884, + -0.6252940367255091, + -0.5402431791279767, + -0.36180811654091255, + -0.06466661128502516, + -0.5210708444214565, + -0.6063983986034045, + -0.5148096472687445, + -0.8254955435724608, + -0.5562460738784742, + -0.5527384657236577, + -0.6794448772755408, + -0.06878209921439593, + 0.11490576143745002, + -0.7811811879685576, + -0.7371081839269985, + -0.38067982113639365, + 0.1349741266886918, + 0.042658984245109055, + -0.20376493588450506, + -0.7511552901391932, + -0.7622348141271974, + -0.46141041403946753, + -0.5586839143925982, + -0.6982382851525933, + 0.10512293350449498, + 0.10713085944266953, + -0.7403209599964571, + -0.5409891998400567, + 0.05787649709818443, + 0.12954886514734576, + -0.5459894223964528, + -0.7625217005416427, + -0.010449209739158527, + -0.5438964680418108, + -0.6446190881929027, + 0.050490450606430426, + -0.20190234046210986, + -0.42434569379085224, + -0.2499724821866468, + -0.5660067031594205, + 0.08871881482787725, + -0.7427763279956137, + -0.7792747209653929, + -0.5719438763399189, + -0.5139848982107309, + -0.2500813264399986, + 0.06347856911932614, + -0.6061955729630908, + 0.060966506045741164, + 0.1131249910002542, + -0.7707325711782395, + -0.8191513518252921, + -0.6830931030497223, + 0.08304732195172337, + 0.06493811925449755, + -0.7182611367086063, + -0.04157318308383817, + -0.040497434284640366, + -0.8036888458788831, + -0.5136667194601926, + 0.03620289162264567, + -0.6817275369508067, + -0.7229343804033475, + -0.18973517728143963, + -0.5639218334072011, + -0.49259068251360066, + 0.13321916051342297, + 0.060301077509808954, + 0.10368020891437024, + 0.12416243840678443, + 0.07096113606742638, + -0.259030517584913, + -0.21244089300875335, + -0.16673910110449308, + -0.43617908413706497, + -0.4134988937597147, + -0.3483309106934872, + -0.4621684020416495, + -0.39043253273520556, + -0.836215169111008, + -0.6140696044379537, + -0.581554315449601, + -0.24198111260775246, + -0.7477736414288231, + -0.6259866661295068, + -0.08384043792165319, + -0.8457597821393579, + 0.10911174879587393, + -0.25246138735747237, + -0.6480566638388183, + -0.3455521694887279, + 0.09309187253512619, + 0.07178651005113479, + -0.33237287102745317, + -0.19218993002712037, + 0.07285045873558194, + 0.06069593532632234, + -0.6586405679029468, + -0.8248334503185251, + -0.49886915063871523, + -0.6950142248224251, + -0.13941684325444392, + -0.7632375755222683, + -0.5344641196994839, + -0.4548693904556227, + -0.7646418466018976, + -0.6867395181054123, + -0.7178157447369866, + -0.49833649581691547, + -0.2434389134005549, + -0.4114507351045054, + -0.5190701547490941, + -0.26398730903055434, + -0.5372379532358971, + -0.7097736238554092, + -0.012130468658065219, + 0.033251039048525, + 0.022650794160036014, + -0.1214783995925226, + -0.00881428279722185, + -0.339834367007842, + -0.8305571702784037, + -0.2613963303572322, + -0.7215431504434134, + -0.11848655955245657, + -0.40635610565369445, + -0.4245014781112325, + -0.6035430381768007, + -0.25686522687338464, + -0.3826076646533661, + -0.737670770165095, + -0.05036594386420801, + -0.21218330052082413, + -0.7666849802091891, + -0.7928213602405175, + 0.11641792285841757, + -0.5591097317055462, + 0.05953684919668478, + 0.07249114080978303, + -0.4364023683993647, + 0.08334465107065758, + -0.35137401835128973, + -0.21278713265842175, + 0.1192001487115435, + -0.020428093378631162, + -0.07453918010878724, + -0.6079514561189273, + -0.5965847749997446, + -0.06967477750673612, + -0.43577846579375706, + 0.009530104682703988, + -0.4186249658450219, + 0.10158709571211144, + -0.44075460418593665, + -0.1174694590842853, + -0.6625779548844737, + 0.045271639581597634, + -0.8105129971915445, + -0.1256869002691453, + -0.5238705107235324, + -0.3758899119485618, + -0.33982995645360503, + -0.7044501147523017, + 0.08735301122653238, + -0.26360347216585067, + -0.8394184834464322, + -0.22976001659347123, + -0.8431822109145138, + -0.8367234467472716, + -0.11202241810823754, + -0.19345560762217673, + 0.0394590262192126, + -0.6557932865962279, + -0.8401617874605308, + -0.8157515804644225, + -0.23436852016328913, + -0.7296636088164483, + -0.27950614059467227, + -0.1653022173657297, + -0.22750266831797983, + 0.10199399151813382, + -0.512078436771016, + -0.5201665361587978, + 0.07036568793471476, + -0.09143362386745979, + -0.13028727387844563, + -0.1583165942894571, + -0.5614344779340368, + -0.014861968889119836, + -0.6789568544182149, + -0.08820834486597695, + -0.2667534655134981, + -0.8342453860594117, + -0.8416809313259449, + -0.5575966784633575, + -0.3077071214923254, + 0.06580923596328103, + 0.09623422064965925, + -0.16749066893411213, + -0.7318914595149553, + -0.15226636810670025, + -0.10946517774704989, + -0.6799077116691321, + -0.42814458704174724, + 0.0615657755092851, + -0.4823253474868203, + -0.5730868519664607, + -0.6971845302456492, + 0.03434162473300051, + -0.8381375366856353, + 0.028984832766633106, + -0.7039446452877294, + 0.13771131154902994, + -0.5059788554316972, + -0.1655501492815752, + -0.479869653903777, + -0.24065552945869872, + -0.6468364478054471, + -0.4464640687893331, + -0.05325462956874949, + -0.16572823205818044, + -0.6713667262964597, + -0.21548381431461938, + 0.028330590247098497, + -0.8040662438095418, + 0.08488790730963702, + -0.25826276344501076, + -0.7850244501445635, + -0.19729877209062052, + -0.5922207878589839, + -0.26360979443928745, + -0.08661866641229199, + -0.410587648552383, + -0.4456031209796055, + 0.053123822743864735, + -0.23513373370289836, + -0.28825442899861464, + -0.5476326633957609, + -0.17587883477517097, + -0.6397921417384711, + -0.4671864874275845, + -0.47726689008419, + 0.12668593459935706, + -0.14596123610749734, + -0.2603129825081175, + 0.14304072809791224, + -0.08525184187524759, + 0.07317593223011021, + -0.5606386330476233, + -0.6112221007565715, + -0.5845974654618251, + -0.07936619937404377, + -0.497433063212586, + -0.6373177647833437, + -0.5514959221636608, + -0.25425884258679066, + -0.19586720632180132, + 0.014365176375894184, + -0.3998828278893345, + 0.0684697451155718, + -0.18601581514847731, + -0.4581606470987425, + 0.14552396442128757, + -0.7353604230486853, + -0.5897473132683665, + -0.26063394658810546, + -0.6094342434963518, + -0.46209206111383005, + -0.7512115498955577, + -0.02420453101886233, + -0.22849604483479957, + 0.05631271918731773, + -0.6663834466676604, + -0.24293184248843736, + -0.1455702348660971, + -0.09511975311000553, + -0.07650763398392812, + -0.11694469413479225, + -0.09507804542483222, + -0.06622122282467346, + -0.31159481225580576, + -0.022460936117562724, + -0.24086388785749924, + -0.0589776052764619, + -0.7004346822662008, + -0.46516033159340353, + -0.33774985297941673, + -0.6446370578033792, + -0.630596672291325, + -0.7091613665695211, + 0.001698186826467274, + -0.764831819488286, + -0.4015289468875701, + -0.760601062913259, + -0.5850286224556219, + 0.09990056816863047, + -0.6096654460910842, + 0.11462721736104309, + 0.07362670909665758, + -0.5896663597009957, + -0.2519672976449715, + -0.4936272358812964, + 0.1018093509373198, + -0.7057944335586028, + -0.3140222550775611, + -0.3884758034738091, + -0.35598923782468966, + -0.41130065898694884, + 0.04601423395219573, + -0.11382708770097394, + 0.07966202114042586, + -0.7548182997118895, + -0.26765733917094925, + -0.7426825946463317, + -0.19992621349655193, + -0.7381441955733827, + 0.14778200574601807, + 0.08239828874215371, + -0.08791856552605581, + 0.029627858196889845, + -0.7828328535160877, + 0.13499052508943854, + -0.6443183994670953, + -0.8471926676403393, + -0.7620089820488648, + 0.010616101699315372, + -0.8163964668132246, + -0.5262145834208285, + -0.7562560351794051, + -0.1454039520689011, + 0.1177782691017738, + -0.45686268295749205, + -0.8115710586781629, + -0.6685475629547735, + -0.10592549248899885, + -0.7806331778976032, + -0.4267855305904955, + -0.04251045445051449, + -0.6999542022879169, + -0.15632130904334585, + 0.1430244868482351, + -0.486780735144221, + -0.2116621386509796, + -0.4006454296330085, + -0.3453867812882978, + -0.8465059110972414, + 0.04557214417464839, + -0.6151434491298724, + -0.8341287376951476, + -0.8411475653866254, + -0.26758318973050355, + -0.03967129234001965, + -0.7044482768610028, + -0.5599301010154336, + -0.16272765527127986, + -0.5754124319288938, + -0.3941620912633658, + -0.14921216227780332, + -0.39675997581060807, + 0.13379160085784247, + -0.8153832973600399, + -0.7663125800264707, + -0.16156661945789808, + -0.1561129854411526, + -0.42476327388424495, + -0.6300574965609091, + -0.7546648716893902, + -0.3338553506630988, + -0.6443281138048568, + -0.2640039278414953, + -0.8154046142236521, + -0.21097172910051565, + 0.08645477384926203, + -0.8233225829190104, + -0.2790484921269831, + -0.4934517982115191, + -0.5765186324998103, + -0.708992584292502, + -0.027847994761468375, + -0.03615907480787506, + -0.5911518427532086, + -0.6004538985384019, + 0.025741455666073332, + -0.08599770220753244, + -0.8402160183975699, + -0.0020729994868786683, + -0.5016494071515282, + -0.5994095736849591, + 0.08811049463105958, + -0.1543749765216722, + 0.13088962447928587, + -0.724472309963842, + 0.1339112237508321, + 0.10571260791654524, + -0.1850674799943559, + -0.7318414844487512, + -0.45262301455584564, + -0.35637422394929796, + -0.7510528642918922, + -0.5327425894188464, + -0.7979934996601319, + -0.7105345733236132, + -0.7629982380561049, + -0.4716801031413181, + -0.09783653757232802, + -0.5296626542118763, + -0.7645985273741487, + 0.11147729380614546, + -0.0564125294735508, + 0.016100867300311794, + -0.549982163667659, + -0.10584374208899294, + 0.05692264069770747, + -0.7903558769698892, + -0.05962772009590567, + -0.7432476676268545, + -0.7215565064134919, + 0.12813757304645368, + -0.7459012186775017, + -0.5439887472557825, + -0.6196599973601047, + -0.22401719204106096, + -0.13618735112676827, + 0.1260475997488265, + -0.1707610667217213, + -0.5618926771414059, + -0.638456338267137, + -0.7257315347921492, + -0.06314461945282179, + -0.03407745362753922, + -0.7567606960638991, + -0.30742874194315484, + -0.7128909742315269, + -0.565388987809532, + -0.6957611929314043, + -0.5649190365646761, + -0.7778697101222972, + 0.044953646273666936, + -0.16376490980996716, + -0.2596363690524197, + -0.21301611019770494, + -0.19281345248998893, + -0.8140355530318959, + -0.49402332715911523, + -0.26667141122351357, + 0.09405666322459949, + 0.11023294138301176, + -0.22428676235800082, + 0.1108489445988502, + -0.3837074902896295, + -0.8297915889201728, + -0.7236695212572007, + -0.6098825958813295, + -0.6942738448935586, + -0.8264306169193244, + -0.43337543854983285, + -0.7207370453117754, + -0.33910395343401434, + -0.49823780022565034, + 0.017830769419314496, + -0.13907292709404773, + -0.3253087505693789, + -0.010367818817144991, + -0.30002206219635263, + -0.5262584852122381, + -0.747627027437171, + -0.30621319425037086, + -0.032388975013188936, + -0.788867955961087, + -0.41443332913749703, + -0.2036698896752538, + -0.4081516909566061, + -0.7216983680367342, + 0.044320869897609416, + -0.5896240729692588, + -0.5479484664602784, + -0.6439948667203302, + -0.5092008995942954, + -0.6852098065782177, + -0.6462815749572087, + 0.11115583069717594, + -0.1327332384993758, + -0.7660112770317332, + -0.6072696001623632, + -0.14890060743041333, + -0.7247624311584059, + -0.6744196986238772, + -0.23590829938822766, + -0.07629025619540741, + 0.132876014415357, + -0.31335751882243235, + -0.002119078337986746, + -0.28184264511057255, + -0.38798523595527973, + -0.3239694708256132, + -0.21199062787196488, + -0.1693462917736137, + 0.0978740019875648, + -0.7954398539135575, + -0.7613174273161751, + 0.022523429784235938, + -0.35769257135888, + 0.055303437579446335, + -0.24123013667408721, + -0.718117504436348, + -0.6896151889797716, + -0.12076307598986691, + -0.08378951740288021, + 0.11881457350066671, + -0.14286936364381775, + -0.6405684350895153, + -0.06819938294024819, + -0.04969469225995571, + -0.4525516192787929, + -0.6771823928253558, + -0.42605106074769694, + -0.41347621628254705, + -0.13705624787738913, + 0.12647245730985668, + -0.6910404298955457, + -0.5613031779607206, + 0.07494328956964935, + -0.31390829410071674, + -0.034411529015852205, + -0.24492143521970122, + -0.7208530364883412, + -0.25754436164722194, + -0.7912312488972137, + -0.24485803636496672, + 0.07980333634579162, + 0.1371031527528993, + -0.7810710560580519, + -0.051771552125837283, + -0.06170739596325525, + -0.3749807881205755, + -0.34123476958572063, + -0.06781933980917032, + -0.6624765538024586, + -0.43130379789632595, + 0.026605104645656907, + -0.8334038300688695, + -0.645922826658075, + -0.06808048887773, + -0.28363663868237377, + 0.11840660046688745, + -0.48928919584777325, + -0.13199908663714222, + -0.7698267239074283, + -0.07929544304580993, + 0.015487019297333537, + -0.8240298911794627, + -0.4511551754502782, + -0.3872250285375081, + -0.26300663628132137, + -0.6796654587759705, + 0.1470609034411967, + -0.6668747000021784, + 0.04192771716451427, + 0.0900677454466644, + -0.6468807554126357, + -0.17960361329688945, + -0.20501716701668582, + -0.6611555664955064, + 0.11820780372457429, + -0.3391621660707391, + -0.324993760547697, + -0.15613549000749338, + -0.43999785036448696, + 0.05533839219255976, + -0.1449207440013649, + -0.5185379581960289, + -0.024524595691169715, + 0.12200962235133306, + 0.14066232539236323, + -0.37856326167708293, + -0.6827141967811251, + -0.4110266337659714, + -0.6235009999173949, + -0.14776976162252264, + -0.06863230472931059, + -0.425350355714703, + 0.052009877878367416, + 0.13352782626785709, + -0.7580937931673688, + -0.1000403873196245, + -0.7676012755620084, + -0.1719753771751108, + -0.28894082292743084, + -0.47210202553302555, + -0.14246904664654325, + -0.8218487497296638, + -0.38950427542634614, + -0.09640153494705239, + -0.46225801105279685, + -0.8396487649312496, + -0.4613405444880971, + -0.1637033993151087, + -0.5907800946736814, + -0.6392853057470445, + -0.694387459182861, + -0.44958737047422603, + -0.6706886045774327, + -0.322279465697604, + -0.6640983390410274, + -0.2109084355580534, + -0.03593238958776612, + -0.8357962101063471, + -0.6871355877373803, + -0.3469553773629426, + -0.7968007139469614, + -0.47949115535223524, + -0.5187553050660125, + -0.4007876445730666, + -0.31535132338498684, + -0.4656175751759803, + -0.16829399692155877, + -0.16012403583360424, + -0.2706069448693095, + -0.3576068341965196, + -0.7530394548596495, + 0.011091003134092281, + -0.5645264600678942, + -0.5081506639121449, + 0.14054090101961225, + -0.19269829702408325, + -0.11198995187068117, + -0.3455913090949587, + -0.7880808963371141, + -0.042883516773028596, + -0.1254592147812864, + -0.3225734757955726, + -0.704453476648089, + -0.5832641707006783, + -0.29370939290321607, + -0.7081469117892201, + -0.348774510301878, + -0.1095832388037623, + -0.10165246317688104, + -0.5933279562674358, + 0.10259227640501278, + -0.2534637900412715, + 0.09574253000815491, + -0.8062107613096181, + -0.45022996781334124, + 0.003006715105799418, + -0.5887561810814508, + -0.33402650387167887, + 0.08728494217424909, + -0.7324141691309681, + -0.7865022264079372, + -0.16887158945066894, + -0.575702743467742, + -0.3404280606636344, + -0.11580781554181196, + -0.46529778192166704, + -0.7401729178843749, + 0.12361609038431087, + -0.6595648978711037, + -0.3169893442876517, + -0.6913089275155561, + -0.30498777983614533, + -0.2566061149432295, + 0.11615843802657877, + -0.7979312320989742, + -0.485524039122827, + -0.23868038465443664, + 0.08419962179885998, + -0.7368297591116282, + -0.18700765705943811, + -0.40406418272319206, + -0.5518150475962704, + 0.03564726908656035, + -0.3692826224913574, + -0.30335722892706607, + -0.4799168007904334, + 0.09162731001744173, + -0.4520659317502891, + -0.03435813648833275, + -0.7903069541679378, + -0.3652073910803582, + -0.6283699411324891, + -0.09493728192669104, + -0.7398866046070998, + -0.014261845425675324, + -0.05001596847156309, + -0.16463474406925516, + 0.09143652162054061, + -0.18745612710790893, + -0.18322730662195474, + -0.2738173375753403, + -0.3046295949134783, + -0.7632312993287245, + -0.35720896003700114, + -0.0864337306733054, + 0.051003116489354405, + -0.6823175026067885, + -0.7863317354969619, + -0.5491551872570006, + -0.454007310208359, + -0.025226654490876466, + -0.2706381961279354, + -0.26092753569061056, + 0.14398295961803487, + -0.4805838422452572, + -0.09640388471075312, + -0.8401514903651967, + -0.10669570091334202, + -0.605153191807206, + -0.023134459868028423, + 0.09621467824535601, + -0.6650002399932019, + -0.563272221570889, + -0.2712188547850367, + -0.7894838865495343, + -0.6390735900688029, + -0.775331560299311, + -0.6703354448972931, + -0.7467466005136397, + -0.4886586682511007, + -0.07925000156715645, + -0.5896080569526752, + -0.7201841275109333, + 0.06224179565618193, + -0.6825836938350704, + -0.3569299677937749, + -6.511655751192391E-4, + -0.4505179190908886, + -0.7384923763479453, + -0.3818349544938944, + -0.4875306197432897, + -0.3767684359935405, + -0.00461715057733858, + -0.09885626585097995, + -0.5562517246403841, + -0.7540624673497726, + -0.7885175588535478, + 0.02951549828230171, + -0.09055152235725017, + -0.5942956264071688, + -0.5100716735168618, + -0.6084348887151015, + -0.44960860823882953, + -0.05907535984405399, + -0.43719669308402487, + -0.10457042473415146, + 0.002277075891920166, + -0.4383393330599022, + -0.059698247082315414, + -0.19860796364575695, + -0.39869927759475415, + -0.5986076945182844, + 0.06011639751134312, + -0.4432340074889703, + 0.02253838514761164, + -0.06426672531483546, + -0.04874976263041597, + -0.3110514644131399, + -0.5607827660481912, + 0.07365968648640897, + -0.18057797089557925, + -0.25410114175334786, + 0.07613544821163931, + -0.3915988273851112, + 0.02145793158887932, + -0.603180258427089, + 0.007136508072049463, + -0.4517646055226151, + -0.14919793030778172, + -0.5592884487030715, + -0.6284098126931291, + -0.1657335182483194, + 0.12481277236502841, + -0.6814272821902093, + 0.026386511679098112, + -0.073824104699582, + -0.4602507768937408, + -0.2569977430791972, + -0.7629214270663875, + -0.5108455964214582, + -0.3721491043884083, + 0.10431277710942088, + -0.3087061134638379, + -0.8473441576253655, + -0.377562650787423, + -0.7673201079270252, + -0.48902956720857044, + -0.19272817059892478, + -0.4091719149151085, + 0.33288531829803436, + 0.3629286703597931, + 0.2910746675569327, + 0.2226325089400876, + 0.2584597419940906, + 0.19126151234317437, + 0.36947879948273604, + 0.27247155314550353, + 0.30503079661118365, + 0.33214209554261886, + 0.22441172634768214, + 0.3017841511861197, + 0.2450321729097969, + 0.2936140787633801, + 0.31378610529009876, + 0.3876015977394321, + 0.191280894928234, + 0.38919305317879443, + 0.370669008234327, + 0.24377416429187293, + 0.2545937471290731, + 0.1919451967977488, + 0.3523724752377951, + 0.3745262154423385, + 0.3752100757939677, + 0.2904968115442954, + 0.2233857652583412, + 0.28309208233251615, + 0.22747489812167326, + 0.3907519288833179, + 0.26929431353940025, + 0.15744062080909996, + 0.2222512374284867, + 0.24340750790914406, + 0.3352104494924313, + 0.15879432435797156, + 0.2884488607696033, + 0.3085193909729911, + 0.2990649242943647, + 0.3791547766401123, + 0.3500379337502231, + 0.21162338507066492, + 0.3888114374561874, + 0.21816821138944076, + 0.15945716913117197, + 0.3801175895674762, + 0.25531090361948017, + 0.20189769738452001, + 0.3534537302141323, + 0.20240602734712027, + 0.2395163693301302, + 0.35310802120799545, + 0.3367101600182637, + 0.18020908588993573, + 0.2746054602012085, + 0.23444786337879958, + 0.265761974138884, + 0.29832844200609177, + 0.18790244430622977, + 0.29620081755175764, + 0.24708828451478568, + 0.3539152728863227, + 0.2586888815463895, + 0.37020054607713726, + 0.22147318849638015, + 0.1909970793648769, + 0.2773683980448505, + 0.34599285169216404, + 0.19028887867487454, + 0.21465362205316502, + 0.16364529463228414, + 0.25007659858061004, + 0.3930631421126117, + 0.3344988445925851, + 0.20510232206370266, + 0.3225116210938555, + 0.3055953381852895, + 0.293275587497446, + 0.3378455109998041, + 0.2918428423282332, + 0.2624049518417111, + 0.21713830971866613, + 0.2488104749689804, + 0.15897509426736967, + 0.1895396235613656, + 0.3837649944492826, + 0.3065853714631418, + 0.3495827895497702, + 0.20590068687240787, + 0.2638595653478804, + 0.16651808723787076, + 0.3330550612389311, + 0.3321448352448013, + 0.24035506765921383, + 0.3829586235725929, + 0.18262050948105768, + 0.2705408481846833, + 0.2905630690400639, + 0.35613931336019355, + 0.3327331759288391, + 0.2585831310153775, + 0.2851290803609542, + 0.3720286189359454, + 0.17613578505698105, + 0.3601110965464137, + 0.3116208192585087, + 0.32365672175836857, + 0.22141350589578807, + 0.38769419977292524, + 0.34031594209719795, + 0.34059931172021146, + 0.18388218300972206, + 0.39171633362840264, + 0.1861515675493362, + 0.349285440948783, + 0.30378283921075144, + 0.28742546473993213, + 0.3876054540605461, + 0.32005639297212735, + 0.17300900456970802, + 0.33171040041499456, + 0.32778479006771744, + 0.18262560010543283, + 0.36694366383621124, + 0.18692065187491846, + 0.29238296666105357, + 0.3461981457323575, + 0.21413136003524894, + 0.3127959242903239, + 0.3236523191681422, + 0.16915579894760116, + 0.3558732297780055, + 0.22504174682409528, + 0.21684458914426394, + 0.3154722945498639, + 0.1733912968800546, + 0.2513621920719988, + 0.30750106310628356, + 0.26118520073946044, + 0.33025100905483606, + 0.24719862993977382, + 0.19812963422446164, + 0.38957917671579945, + 0.245360944381246, + 0.18053509432480103, + 0.3065958871074205, + 0.3437221872384325, + 0.2731109153349983, + 0.3138266302928929, + 0.3020909159060373, + 0.3498401249016879, + 0.2950669118391113, + 0.2361119043481667, + 0.2934612167462601, + 0.1826226072577807, + 0.18263115910834635, + 0.26601311007947637, + 0.29334088502443895, + 0.2921507424238837, + 0.3292015361686298, + 0.16281494802163612, + 0.32694806987308705, + 0.3354277807932308, + 0.25634118323943467, + 0.22862475781954356, + 0.3132974406974953, + 0.18370588924796816, + 0.34531470747797083, + 0.3718793718845167, + 0.21167348156632806, + 0.294302010697481, + 0.32110011574904973, + 0.3906950977501217, + 0.18862261074310965, + 0.1933805568369104, + 0.245671173476349, + 0.18864281216843734, + 0.18956964029954224, + 0.23182429054679904, + 0.1998276486395059, + 0.3148600627430186, + 0.3866833185021545, + 0.25041335901779715, + 0.3862372236310889, + 0.3772477629892025, + 0.17020891476941838, + 0.33784601668541414, + 0.3043226492203259, + 0.38497546596922577, + 0.3292701443752366, + 0.23322328509853907, + 0.35446731730847236, + 0.33563300915969985, + 0.2450922273156224, + 0.17067403768202166, + 0.28377230974525586, + 0.37077128491189126, + 0.3428972668194087, + 0.2204575412817677, + 0.36561081777630144, + 0.16341549473772235, + 0.3380829780993035, + 0.3594657839854464, + 0.33867543006937284, + 0.30189264438755503, + 0.31940673339310266, + 0.1813268409445076, + 0.2480562953653812, + 0.3748375785288682, + 0.33710024015151613, + 0.18517990162118098, + 0.31765262544901873, + 0.16094509405524493, + 0.34676339269255363, + 0.22892916840598862, + 0.20050364409822125, + 0.35823972396209847, + 0.37309920379822903, + 0.16173869306988534, + 0.2331213198588744, + 0.3677526237592415, + 0.34016419404692855, + 0.3052746445371931, + 0.2595151185409911, + 0.26121310562348865, + 0.24614756691454304, + 0.1744279925194831, + 0.35138076213034847, + 0.27932051977014116, + 0.3239055855197936, + 0.29237161893090735, + 0.20178878436252612, + 0.24280331767947447, + 0.24840091367075134, + 0.16313036247191168, + 0.37508521644674064, + 0.2395820028205048, + 0.3369565354671313, + 0.2920980711680885, + 0.2308435772619175, + 0.2644762389994788, + 0.17300191140985238, + 0.33238252468020146, + 0.3664013486747786, + 0.2046055704896378, + 0.30843427144818925, + 0.32233750260316346, + 0.3129719989861467, + 0.22819439516866824, + 0.27790731650387324, + 0.28273363059756784, + 0.3900254064479578, + 0.35954238963643204, + 0.19842828421382086, + 0.26170071547335216, + 0.35895264953527867, + 0.2571895456674769, + 0.19465110698077406, + 0.22738779434173323, + 0.31630091373230684, + 0.3059750618057477, + 0.1887266223373313, + 0.3403097674169625, + 0.26159660721371913, + 0.3602820348601319, + 0.16794934448292012, + 0.1957772325450346, + 0.1841200879751084, + 0.3318297670920174, + 0.2843097378490181, + 0.324955878916917, + 0.18747391205626027, + 0.2909684604654066, + 0.32053566584137183, + 0.23916272766032226, + 0.1901325546212159, + 0.19504882061198864, + 0.38795679322687704, + 0.3098743473706641, + 0.3044393791460347, + 0.22241977010617253, + 0.38720891239278277, + 0.35790510928178754, + 0.3827806153495041, + 0.22612600240042846, + 0.2001076259882078, + 0.1863020235585202, + 0.317756802699095, + 0.3309734197343955, + 0.30963226245153386, + 0.20669096718030422, + 0.25802866009371517, + 0.2054393478854231, + 0.227494674172448, + 0.31347875370162265, + 0.17915248317045868, + 0.3056464171291706, + 0.28105865172168876, + 0.32514328127174896, + 0.2775707780169534, + 0.25263545430935885, + 0.32557382999355, + 0.18595208853281875, + 0.2707397645339559, + 0.1671848602529643, + 0.25157442966435584, + 0.3035941447987015, + 0.27921811152086384, + 0.1664281785927656, + 0.22504921390095894, + 0.306286429129939, + 0.3131487057800044, + 0.35746194221214195, + 0.36985638242191377, + 0.23425891595460724, + 0.3808067472336579, + 0.19028789738626534, + 0.27024756005611683, + 0.17199631203619045, + 0.3544367780558191, + 0.22650637570343257, + 0.3491849831403287, + 0.3821109013765165, + 0.2419120077619477, + 0.3404419410887143, + 0.20073657608483442, + 0.15754953549927686, + 0.19668995388013777, + 0.3374480661094934, + 0.17994390243572103, + 0.20706730352753, + 0.2944692520708462, + 0.2019486828569929, + 0.21985309367648673, + 0.25655487705577207, + 0.34788278985270904, + 0.3359452983919349, + 0.1830507968687668, + 0.2838365333528516, + 0.1796695889870939, + 0.1657979288344047, + 0.34159598647950595, + 0.34687073124263385, + 0.19829014589753485, + 0.17586176011322152, + 0.23670444422427253, + 0.2529995855923483, + 0.27708944983101297, + 0.2846759115805809, + 0.16900511786858932, + 0.2939764209716046, + 0.15789763467975473, + 0.31698077283216886, + 0.2670800002101581, + 0.22685620325618616, + 0.22416824955030057, + 0.18385952524831523, + 0.2140800849534531, + 0.2863039636369986, + 0.3375906405004009, + 0.3472265329727795, + 0.3549010780472907, + 0.2856212831103767, + 0.20567775479679956, + 0.22839372843180894, + 0.1890627147547544, + 0.23613977427719537, + 0.16231053369521725, + 0.30208433193325634, + 0.16969114648557682, + 0.2227142859839426, + 0.33783419240911894, + 0.2318066217343087, + 0.15991387148328487, + 0.26818030805365023, + 0.191857718580482, + 0.18380021387559545, + 0.3879749882253115, + 0.20190441075144003, + 0.32413683856537334, + 0.17180092700560573, + 0.2874244741223908, + 0.18739115071915188, + 0.20351141885308552, + 0.2036769282106759, + 0.33129824163889093, + 0.26743752640317453, + 0.3567916460525067, + 0.27444650942871374, + 0.3110747704887714, + 0.2504911871058474, + 0.1800657316116275, + 0.2802876478929305, + 0.3691552020677661, + 0.2699103436128567, + 0.36636565212929845, + 0.21709957892160475, + 0.28469787357245446, + 0.1603924316715406, + 0.16389344062410877, + 0.3709739675370358, + 0.22657027649614564, + 0.2074187440197422, + 0.2461643955796122, + 0.35246769333734934, + 0.3259016854819131, + 0.26166280089147553, + 0.32268498685694624, + 0.3919585387572492, + 0.1706296036222894, + 0.18690450096734965, + 0.25128718135255135, + 0.3221235909270169, + 0.37838967879409324, + 0.3678644888775105, + 0.3717484465764792, + 0.38530108629688176, + 0.27550022346955155, + 0.3781948397788808, + 0.3168407993760249, + 0.3800782255246498, + 0.27737574512876845, + 0.32958619534878797, + 0.3224626896612857, + 0.16868142656625543, + 0.2558107235816207, + 0.21407932484375947, + 0.17329778423995695, + 0.2839962851222443, + 0.33654482770705557, + 0.18151049746054745, + 0.1947845254798386, + 0.26201613158897086, + 0.2508357978548754, + 0.31436033036417455, + 0.24096085625712327, + 0.16500054858790253, + 0.3010842468811892, + 0.27840596913388516, + 0.15927412414859973, + 0.2635372203798688, + 0.1765746832819311, + 0.3754692572758717, + 0.35290978912877846, + 0.2664343385410827, + 0.17940276154410473, + 0.3699087835196041, + 0.17718045388647446, + 0.2736332900886356, + 0.24378083979108217, + 0.36668805454014974, + 0.2500129614828406, + 0.28462831468534816, + 0.34013715528123567, + 0.26250212619948804, + 0.20908851906866727, + 0.36670091590870757, + 0.22999102728820686, + 0.2953885063422226, + 0.2247153851917787, + 0.26631592921631325, + 0.2316996349939403, + 0.20956433636525756, + 0.3094759325538009, + 0.3743449391328719, + 0.22265641611491616, + 0.23233097280899043, + 0.1821615192650474, + 0.210585443010182, + 0.33071805730810566, + 0.17106012296980086, + 0.3303527465468861, + 0.2644574743292889, + 0.384342377139818, + 0.21873554505482107, + 0.17114556562800887, + 0.2997040167733328, + 0.24708316558775936, + 0.21090893884151116, + 0.2113377543501145, + 0.2680227578963739, + 0.2725742595771713, + 0.3854003764467397, + 0.232625339189572, + 0.36270065944572805, + 0.2980688612106321, + 0.21610261747137738, + 0.17457058380690402, + 0.16227388883301314, + 0.18439932292994146, + 0.1585525683323727, + 0.27840083916058245, + 0.35239204346493147, + 0.1665088859829911, + 0.32131730848051476, + 0.20994203090367763, + 0.16720696603502902, + 0.3601242834427202, + 0.2766688893241144, + 0.34369048141271574, + 0.34300780066689707, + 0.31136893328309717, + 0.2217925472150467, + 0.24399646479672898, + 0.35623787485027647, + 0.37136545189331976, + 0.1953779367786251, + 0.28489676598216473, + 0.23189854516117284, + 0.27332731450588443, + 0.23964922300833066, + 0.32106850161675365, + 0.22520011269705478, + 0.3285650413546131, + 0.18196420511119266, + 0.24659684446175695, + 0.3816653411806935, + 0.3667187546548343, + 0.3741409760121793, + 0.25539802827584684, + 0.22912870265233942, + 0.34672562407556456, + 0.3867889859013066, + 0.26939762231481074, + 0.2614474915428801, + 0.30781398551972383, + 0.2554587574963724, + 0.3319830366915749, + 0.3334635526057331, + 0.3760709319929566, + 0.27340331480795693, + 0.17286815737275865, + 0.3430620162748491, + 0.3091543036694889, + 0.32728942731747357, + 0.21635568416701384, + 0.35479394882139625, + 0.28657334029937137, + 0.21573762454127837, + 0.15673637993322684, + 0.2766049852910793, + 0.19531526673565272, + 0.3851986768187283, + 0.29525763107695047, + 0.19709624082505223, + 0.2754762676845658, + 0.33419503824786123, + 0.36331069615264583, + 0.2769595118597787, + 0.3049882748413163, + 0.3119516371427201, + 0.33797654148202483, + 0.28203838887986155, + 0.20202619354414927, + 0.3120822168004662, + 0.3594859913812871, + 0.32306426083708806, + 0.21005391714271263, + 0.17589879977392406, + 0.20701963677326615, + 0.20097989167597236, + 0.3867068822151123, + 0.17896393110631859, + 0.3082131873126314, + 0.20755065812150364, + 0.2650011859708591, + 0.3394654303260627, + 0.2568282076635378, + 0.22927141994115996, + 0.3059787057431702, + 0.31042351481399866, + 0.2045316334462267, + 0.2197069160178313, + 0.29197107205197886, + 0.26117840278708904, + 0.23595822164583508, + 0.2258142560951194, + 0.24748396162213715, + 0.2533825035964394, + 0.30472877822801897, + 0.2046993747541642, + 0.16100093738007085, + 0.22871542354623778, + 0.31088774150785425, + 0.32909873087810315, + 0.24689971570769909, + 0.34155452246087503, + 0.23926314184116887, + 0.3522133447009098, + 0.25695224805559613, + 0.316307306644992, + 0.19906348726347278, + 0.3909997583400951, + 0.19314281997897742, + 0.18187837462967024, + 0.30903890369082804, + 0.3401390508381703, + 0.22444056611295382, + 0.19666973120981007, + 0.1665854956815436, + 0.16091286720169448, + 0.37988538717827747, + 0.23165185576216923, + 0.37139431878743945, + 0.15972575136556613, + 0.35889587002851775, + 0.19191584699269001, + 0.2855102622800583, + 0.288459004220751, + 0.20902968980529596, + 0.35679803794371645, + 0.22176877660529776, + 0.2038189695722869, + 0.374485126996847, + 0.2650978862432348, + 0.30386039489065386, + 0.17141475175976525, + 0.26729146085865474, + 0.3469790866185735, + 0.29006593055272034, + 0.20392501089147996, + 0.15836113270106847, + 0.38962417846849584, + 0.3096752597558837, + 0.2088129617599482, + 0.17624441513512223, + 0.1786374005403201, + 0.19687108614190235, + 0.2002227048871624, + 0.27783010163815186, + 0.25544758066900813, + 0.34734764586457745, + 0.38452352763735803, + 0.23784891359848293, + 0.3845598420582931, + 0.2765568607601283, + 0.2743925705387655, + 0.23819962969007527, + 0.15943057528897672, + 0.3217003831463537, + 0.16968623248950637, + 0.27507383262124585, + 0.16083055051246364, + 0.23102833308357226, + 0.1704637324206094, + 0.36012870216644244, + 0.33232779836480386, + 0.2401970704258608, + 0.38308579764766126, + 0.2683530832131124, + 0.3215572980825614, + 0.3375101369492418, + 0.20883562659319557, + 0.27442186816376557, + 0.2369726451003643, + 0.3419757229876672, + 0.3375793174115297, + 0.22993027355964762, + 0.17294975748970856, + 0.22034304773271188, + 0.3542473215093517, + 0.2927761594555422, + 0.2600800531302299, + 0.23936081300585724, + 0.28093575333798765, + 0.17846724951178172, + 0.34852878223704403, + 0.20486347425529672, + 0.314924794107485, + 0.36302791148506713, + 0.16630876071400313, + 0.3724162560478447, + 0.281517648624513, + 0.21156595590715155, + 0.30496834091989267, + 0.2522411097141949, + 0.27298393311366953, + 0.18166903314552507, + 0.23423831403593393, + 0.29680042034454257, + 0.23152229186596024, + 0.3536791363815566, + 0.24712723064988812, + 0.2014112197686514, + 0.373666762344427, + 0.2896259458903345, + 0.32322977458984103, + 0.246665260393016, + 0.2427138401048477, + 0.24791203960570785, + 0.2228526671079799, + 0.3307388094514038, + 0.3744413293757576, + 0.3134610766090955, + 0.38338177646451177, + 0.347139939264822, + 0.19896797465193838, + 0.3638980267425432, + 0.30659921695220665, + 0.3419387222332637, + 0.3102483637140835, + 0.1979864749677814, + 0.25127644991068127, + 0.31952092343038174, + 0.38096308949551805, + 0.36653797461585114, + 0.38284149242423415, + 0.19998049108453492, + 0.23344386145452944, + 0.21861075142614264, + 0.301554099905725, + 0.23128435656351917, + 0.26100659831931405, + 0.3330834910978939, + 0.20760198211407432, + 0.3125972061274651, + 0.346390758657915, + 0.3364546555773802, + 0.35412847698999905, + 0.17151609964616643, + 0.31965665970310264, + 0.18531782370056826, + 0.23485702429334354, + 0.16657993948246053, + 0.35730239525413476, + 0.3540976324687102, + 0.22216138363879995, + 0.18713111968473004, + 0.21549794329868538, + 0.3716194616965382, + 0.38112941247967813, + 0.16156600326056328, + 0.37864839863686583, + 0.2303059395337329, + 0.2179324216522916, + 0.2861705380634221, + 0.31611080345011716, + 0.2285210514465391, + 0.30354783585395195, + 0.3870988040228115, + 0.2902101019210589, + 0.31748170410823356, + 0.22431228069952705, + 0.3105923921660677, + 0.29591998617804827, + 0.36230860361539274, + 0.21985535796598288, + 0.3167160440891663, + 0.38221655118493975, + 0.18931705811732785, + 0.32485948505775364, + 0.33654656483128365, + 0.15758325616239394, + 0.2563866250227581, + 0.16185726812228102, + 0.24913294631409943, + 0.28974369232955344, + 0.31018181725784394, + 0.25805917177695836, + 0.1906122312078531, + 0.16443519302646858, + 0.22475305134949491, + 0.2980033610509564, + 0.31264956349479167, + 0.3309727839545904, + 0.19984875011583858, + 0.3607202723606603, + 0.2123102404009605, + 0.2925350217328436, + 0.3469234618730049, + 0.3500919136723278, + 0.18105884280989115, + 0.2579426392205184, + 0.21337498647016795, + 0.17164423120255334, + 0.21484315982396496, + 0.26928829938645693, + 0.15872481417638865, + 0.22585035539734388, + 0.22676135464074787, + 0.18030936362070576, + 0.3421497880007615, + 0.28354780200625157, + 0.21092015567239253, + 0.2587412229393668, + 0.27378660026061413, + 0.28018732012692654, + 0.18837596737439735, + 0.3110234131884213, + 0.2192915806799715, + 0.32247418946141293, + 0.33166473197864105, + 0.39188783002811356, + 0.24902810487753813, + 0.30615613155633564, + 0.28638438159515883, + 0.370850265521949, + 0.3246375277967968, + 0.16413558181471954, + 0.29766445695742255, + 0.2986577684997527, + 0.30461363430369853, + 0.363302300003694, + 0.2728761164205874, + 0.2453658724904938, + 0.1599342838302852, + 0.22352747260245387, + 0.3833797673967728, + 0.20550869990344425, + 0.17951545989979845, + 0.24932964435671467, + 0.28079334143175994, + 0.3000275604478565, + 0.21593055592218646, + 0.1639189467867669, + 0.32584307686701797, + 0.1995208300053603, + 0.15635247926476534, + 0.3882339082397337, + 0.25782738730304755, + 0.1690350719588774, + 0.27286125335992545, + 0.32299893931818463, + 0.3569850719214934, + 0.3023458457145054, + 0.1567887823623163, + 0.23937791547708923, + 0.2554603165767533, + 0.33899418796005043, + 0.2197490952315614, + 0.33114742040631095, + 0.16973562510920226, + 0.3362310445421881, + 0.2325610436508163, + 0.20086677756368432, + 0.278978345349684, + 0.18552932724905388, + 0.18195774870778697, + 0.24028674130327246, + 0.334147963226481, + 0.35210805300044157, + 0.377122000643672, + 0.2510880449471356, + 0.3445767548838383, + 0.3928996354227484, + 0.3780699725015382, + 0.20697305671733202, + 0.3421431382475642, + 0.20322519257493832, + 0.361017511872229, + 0.3209042928478836, + 0.20369928857214942, + 0.2738335239324092, + 0.21759181953029127, + 0.33651169410978843, + 0.3237971308971055, + 0.27873126518970726, + 0.27655111569181146, + 0.2098867574763108, + 0.3034575704198119, + 0.22499163191501875, + 0.22495738480878152, + 0.25936871968027486, + 0.25534276848314214, + 0.2854119525839556, + 0.28789660491765856, + 0.25020703309430203, + 0.18180144334390608, + 0.38372709966005997, + 0.16193403643729173, + 0.38216802812251194, + 0.24366010962118578, + 0.3213637719181024, + 0.1812511485853306, + 0.3744581744327359, + 0.250431960747303, + 0.22040410792675247, + 0.33231207355264636, + 0.32361107911463194, + 0.212611451553475, + 0.258714318221374, + 0.32522043045936144, + 0.17388117467130848, + 0.34269041693736296, + 0.22089198876842134, + 0.2049294432571317, + 0.1646717441530672, + 0.3612819959530861, + 0.38087591877222493, + 0.1625243890010497, + 0.1616283859422514, + 0.1690496983404732, + 0.31170472258705484, + 0.34346322010515784, + 0.3922899079195595, + 0.2729304275246889, + 0.3406656484160182, + 0.33737315510505217, + 0.3299996871936842, + 0.3470412909355368, + 0.3713850052014913, + 0.33433841911277035, + 0.17167307715787322, + 0.3063960606408901, + 0.37721075025753537, + 0.19933402577810314, + 0.32112395609117467, + 0.3228717930159145, + 0.15933237966269576, + 0.32314338206595766, + 0.21850929662219468, + 0.2960952030096131, + 0.29490140324736774, + 0.1669150489190163, + 0.15977398942428453, + 0.16520724464216674, + 0.20999506622795386, + 0.3030921374638552, + 0.1624761691576162, + 0.39071095783497534, + 0.26346645581355665, + 0.36275311978766145, + 0.28855634611283737, + 0.15898604934918398, + 0.2215903151788709, + 0.28232694175544437, + 0.20786495470571947, + 0.2600360650792442, + 0.2623247903680965, + 0.35526822900674826, + 0.2536890679842517, + 0.2040580991024453, + 0.15954164180117597, + 0.2150976612539738, + 0.176834085668601, + 0.30766994596873376, + 0.34906910633409083, + 0.17835129166148825, + 0.2913125634171028, + 0.3685936496334523, + 0.19825531997018153, + 0.20160214441204188, + 0.342448369839383, + 0.3298152462893825, + 0.2416637382494273, + 0.36718431842413224, + 0.3375317272562821, + 0.28878168951567373, + 0.32505409326859674, + 0.2641329475629084, + 0.16712184034344443, + 0.3085167696988518, + 0.25425299968967985, + 0.2636839086115449, + 0.15808567989371855, + 0.3391220496298898, + 0.2302794441598655, + 0.36985153436012463, + 0.2597562641000296, + 0.32962266509870597, + 0.16813738875588732, + 0.24907013579558385, + 0.3125691092529753, + 0.2827650847434341, + 0.3395854508931584, + 0.17300693115536822, + 0.20909431474187137, + 0.24145221142731782, + 0.3371317599223618, + 0.3490038273848107, + 0.18906561377000947, + 0.3208036973022932, + 0.3478602993140292, + 0.3685211998979978, + 0.23176667825037633, + 0.2703835476821061, + 0.3876768574901536, + 0.3411880665244067, + 0.15756439406599673, + 0.3245670156646313, + 0.3457194534993958, + 0.33055791975502163, + 0.29964077741748063, + 0.17574174642721566, + 0.2844471680085757, + 0.3373250783977023, + 0.3803098049483746, + 0.38124402830024184, + 0.3763823196999188, + 0.2227877885907737, + 0.25112369562195175, + 0.2605519409529533, + 0.18225139353925066, + 0.25911102460073615, + 0.2268819047331277, + 0.3176019819361257, + 0.3166787613195896, + 0.31419747205932913, + 0.2568270036586938, + 0.2360187744832128, + 0.31353473989431213, + 0.3341224854062669, + 0.2402856340105824, + 0.313616485436558, + 0.1749408133235469, + 0.38925294138866756, + 0.21517513121807325, + 0.2613690458405954, + 0.297621810446433, + 0.20886149032601364, + 0.34978468871980184, + 0.37993484926818455, + 0.17540950839412114, + 0.2656388134926074, + 0.22487073723683362, + 0.2706664282222022, + 0.38392668833356636, + 0.3690917931034483, + 0.3250807771044665, + 0.262259434442094, + 0.2072253637689141, + 0.38567958103355415, + 0.23439353623606785, + 0.19602385536045377, + 0.3816816843163101, + 0.17431118774870322, + 0.20605919987265842, + 0.25795839690759165, + 0.23770071623111222, + 0.2595897402531093, + 0.3600159179161327, + 0.2384316396725346, + 0.23759043890288656, + 0.197683723116204, + 0.309236590616469, + 0.3865567885606607, + 0.2990384965496337, + 0.18124567233460423, + 0.3801884161574739, + 0.21186274353149273, + 0.28471196522587217, + 0.19274732905717606, + 0.1980218519727238, + 0.21036423153034314, + 0.36707116954085506, + 0.21722683127018758, + 0.2747640323448014, + 0.2635265932255566, + 0.2049978509232255, + 0.3489716331286511, + 0.28830885178740073, + 0.29310556482976013, + 0.21024323103617323, + 0.28221817019690193, + 0.35714068262233245, + 0.22642459213927335, + 0.36471523597040945, + 0.30998597673362777, + 0.3013436532538536, + 0.18106096970640903, + 0.36336917933270985, + 0.3194181180133497, + 0.2512162423593105, + 0.17442205750350995, + 0.20300446108828699, + 0.30511948281414825, + 0.3377615806314142, + 0.26025385251306404, + 0.22636194676258373, + 0.2849001759396748, + 0.2732801487142511, + 0.3057887385204294, + 0.3744884704259264, + 0.3589824675668154, + 0.3075244214851665, + 0.25848904978912524, + 0.24888254704515617, + 0.21644917955198625, + 0.15919680475106107, + 0.18025073248562545, + 0.17265207807002494, + 0.16529883649598034, + 0.17091067551345365, + 0.3705914897610353, + 0.22987149564556647, + 0.306660374629493, + 0.3617313596767935, + 0.3081085732120116, + 0.27988640260689585, + 0.36988521442195654, + 0.2639362967024421, + 0.17114738309933486, + 0.34047634075368494, + 0.1921246368413383, + 0.3691396570670953, + 0.21892751675651762, + 0.18314203808047858, + 0.2556721283096398, + 0.15915980629538845, + 0.2054675292059784, + 0.34122767352169786, + 0.20049481548053533, + 0.20962931687659186, + 0.38502591981612505, + 0.37196194348897244, + 0.30565012223787813, + 0.17550427936086396, + 0.3482540011002835, + 0.28718408432357667, + 0.2599545220796856, + 0.24974112736184484, + 0.2414127082329286, + 0.2704013376374203, + 0.28787328963038994, + 0.26805281586949636, + 0.16218566966835837, + 0.2122471749387947, + 0.1923166749319442, + 0.35476743699430024, + 0.23262276269092164, + 0.297523567548474, + 0.32450482740683595, + 0.2655962617222965, + 0.3641458273356165, + 0.3194648817774677, + 0.22510313794695808, + 0.3908152083134241, + 0.19878432237605148, + 0.3184566792681097, + 0.2817465239400596, + 0.3020593809459228, + 0.2709925025278503, + 0.19442779340001468, + 0.3056321383099548, + 0.29551040483846575, + 0.1898920858585783, + 0.28423104099269475, + 0.2749055800437824, + 0.37012659751356825, + 0.23785182413022105, + 0.18591236257705357, + 0.3680677617694722, + 0.22313467405677645, + 0.29821861420519147, + 0.26814625529032915, + 0.1837660072472653, + 0.34194411974033967, + 0.2798433830673088, + 0.22587367190312818, + 0.35694617220113367, + 0.2732973041572152, + 0.3727544601317957, + 0.36176106122466267, + 0.16169587971875268, + 0.32566464658168076, + 0.18110905629383195, + 0.27610847808999883, + 0.2552640277955585, + 0.30521934844347637, + 0.2898661981974684, + 0.2558560076327301, + 0.3671408247257842, + 0.20320977021159803, + 0.15639692521336188, + 0.34364114558429487, + 0.2909056212242975, + 0.37239518864512167, + 0.38711268986379965, + 0.39200899645367937, + 0.33788005740923566, + 0.293677697738445, + 0.35766972841142464, + 0.1957070146386231, + 0.3609374608615601, + 0.254033725018495, + 0.3205426540115345, + 0.24591853749800952, + 0.18556379155749572, + 0.18695502222050822, + 0.16216117351544984, + 0.2822912098005027, + 0.29098526676327874, + 0.3764282486923618, + 0.26944235347102813, + 0.34376453757724135, + 0.3001789018357971, + 0.35985795565193457, + 0.35593925716267055, + 0.2522782141081335, + 0.2720723332790289, + 0.21532092605407177, + 0.30779664685932895, + 0.23008692223361898, + 0.28007048543436164, + 0.16626154110121907, + 0.18663546063853656, + 0.18407996959890813, + 0.24874818668040144, + 0.3294404337760405, + 0.3314008423904745, + 0.3459170624752518, + 0.3144166655290106, + 0.3897887096933214, + 0.3003972794817231, + 0.26255948187658246, + 0.2889019052995359, + 0.281868732784616, + 0.2648500855080853, + 0.20332382738359947, + 0.2789963690809069, + 0.370586954128846, + 0.30613234895175234, + 0.16194384389935693, + 0.31848969891266377, + 0.2562931192944611, + 0.2601317953901532, + 0.28289089837000403, + 0.22337447711781455, + 0.3359478707869946, + 0.20201789410514692, + 0.20183061986320122, + 0.17411851290169447, + 0.2383212188912046, + 0.2642839333159894, + 0.2642039932822236, + 0.2821480035804618, + 0.18111175153774528, + 0.2718818272816601, + 0.3868531299371094, + 0.20184483789750615, + 0.34099306032698684, + 0.2115822441013294, + 0.2872062492746774, + 0.35650151774425043, + 0.37624231879264664, + 0.3473971308221102, + 0.16500506543035603, + 0.21061278046309573, + 0.18100981168447977, + 0.2093731206554089, + 0.31390555836586564, + 0.2192424876577403, + 0.3213429468441852, + 0.24736039659308784, + 0.17480689797393323, + 0.33064140166566314, + 0.28966816395709016, + 0.20024827076603655, + 0.24944595727560023, + 0.16155038774330346, + 0.3832612682269897, + 0.26917349941002194, + 0.3851676637522658, + 0.20649302846276674, + 0.26767569976307715, + 0.31150920991539943, + 0.30982624040843854, + 0.37521225518619195, + 0.2603482229503168, + 0.32510069838217026, + 0.3038229187490501, + 0.20821131748951466, + 0.3331277599850423, + 0.2515949048241026, + 0.1582246062100083, + 0.27109297696003576, + 0.40154187055563445, + 0.4017722051165212, + 0.6916571185461309, + 0.5701242136841256, + 0.6169901659911019, + 0.4706872464612293, + 0.39968404971400495, + 0.5250723499420871, + 0.4169778388994203, + 0.5358554680377727, + 0.5630581281370561, + 0.6230876491204002, + 0.6674043773579551, + 0.4806241656664044, + 0.5134566720637297, + 0.6312557497859931, + 0.698249720767383, + 0.6822306469470472, + 0.39459664900519814, + 0.6688531981974466, + 0.5960278380766652, + 0.5184739627766535, + 0.40765392272526246, + 0.501893517488013, + 0.48501083044444404, + 0.7075375220072565, + 0.46709537091635434, + 0.5801048894449206, + 0.7008212297766756, + 0.6365935295020563, + 0.5914566988131947, + 0.6159021182039635, + 0.5876596767579818, + 0.65281095049877, + 0.41738647136241014, + 0.7052037244907183, + 0.4916593021397012, + 0.6507125838330737, + 0.40245183542003016, + 0.46944425655170435, + 0.7037251816515895, + 0.47195547432534235, + 0.5057071371150839, + 0.4539476530035231, + 0.6421634476620144, + 0.5169099494804125, + 0.515243577415043, + 0.5301780151396196, + 0.5057948002069986, + 0.43608287219776065, + 0.3950877571834391, + 0.5220511059099926, + 0.677310945814692, + 0.4442658448349917, + 0.41639286587220425, + 0.648350495937503, + 0.4305103640836245, + 0.6262678344233075, + 0.4116650566284098, + 0.5871734079650871, + 0.5283673344898289, + 0.6405365762885427, + 0.4673214902296362, + 0.6688438867840596, + 0.66085731327718, + 0.6675015370266495, + 0.6822571494539108, + 0.4131805405271625, + 0.41997144360967154, + 0.605421726410147, + 0.7050168889012589, + 0.653093144602046, + 0.4248840440884856, + 0.666886804279991, + 0.6544456870959641, + 0.5993014764982849, + 0.44093626676770176, + 0.44520751061245745, + 0.7155179208144785, + 0.6273018464476734, + 0.4572809796962145, + 0.4032671733823702, + 0.4408354435741126, + 0.6046044049973651, + 0.7157681482926844, + 0.592278402932372, + 0.42786328759494147, + 0.603577649324597, + 0.6440822603012338, + 0.5145687091132335, + 0.5226677732708489, + 0.5282596131520243, + 0.555894659525025, + 0.5364738285204318, + 0.4711656243461399, + 0.4464810537172559, + 0.7064903043053322, + 0.5137751127678041, + 0.6969662632137319, + 0.4540267477337116, + 0.460714264785641, + 0.5027387310238904, + 0.6499880464547083, + 0.5613320747154835, + 0.48132306425563287, + 0.5573855261415734, + 0.41773948220922086, + 0.5126607446177696, + 0.4953782702524792, + 0.5640593309085433, + 0.39825880716200496, + 0.4425750572455854, + 0.5666241358042949, + 0.4503867205672676, + 0.5061622648208324, + 0.5766754127919094, + 0.46279047476529445, + 0.6885004408640818, + 0.7098653030982474, + 0.5155770942213084, + 0.41819027755964455, + 0.6178323224208955, + 0.5586169059747785, + 0.7059406593439119, + 0.5069669270460841, + 0.5394119083094847, + 0.6902332418721471, + 0.6748386757427622, + 0.6773296926931041, + 0.5801924264286119, + 0.66924753523923, + 0.3939388815074583, + 0.6043781364676322, + 0.605910117502007, + 0.4914386964479722, + 0.48196301187606383, + 0.5121127017476146, + 0.6477388239901842, + 0.6085493399718112, + 0.5776594727972111, + 0.4585572736199431, + 0.5006002927403831, + 0.4859728091294991, + 0.4680158710850781, + 0.5004408237214906, + 0.5979502494342562, + 0.45029984321037325, + 0.40707462241894393, + 0.6619769364842552, + 0.5232885655683437, + 0.46330695577060915, + 0.6646448337689268, + 0.40662192150506526, + 0.6453570408645554, + 0.6009046130559909, + 0.47360765171165436, + 0.6121036939393069, + 0.5177464857200167, + 0.5605287284170222, + 0.4946975275247769, + 0.5116839172315124, + 0.478585401527148, + 0.5404066373557996, + 0.639515853309392, + 0.7081596241211222, + 0.5323071100000086, + 0.5503739568272014, + 0.5437155780385701, + 0.4846698329339714, + 0.6637645323921548, + 0.6564530369820671, + 0.6672518817581623, + 0.43894817626592897, + 0.4890321124071386, + 0.4840353839326377, + 0.6311451603017477, + 0.5940939548617449, + 0.5889364011631264, + 0.6489246772679219, + 0.44725188122319487, + 0.6600775345037945, + 0.45345045448814586, + 0.539611385488604, + 0.5430739848380541, + 0.6187209581140614, + 0.4117418087490544, + 0.6053631832994046, + 0.5267975854508586, + 0.4131380248736253, + 0.7114764999826562, + 0.701125715070204, + 0.43734094515257693, + 0.5930423474972547, + 0.40805885695406197, + 0.7108553592924252, + 0.4450444965204674, + 0.5541614961678432, + 0.5888333563829715, + 0.4999719329353569, + 0.6607623242053204, + 0.6053446736987091, + 0.5307227958921157, + 0.45824915209559014, + 0.42988173487393455, + 0.5330823558440034, + 0.5921514892096896, + 0.427112254789851, + 0.6231124882144121, + 0.5811292533021727, + 0.6278316337248238, + 0.5484014332260563, + 0.511526819698542, + 0.41842021184986916, + 0.5320848222523042, + 0.6199536789338235, + 0.4850240397326074, + 0.6366001345612674, + 0.4122279543978098, + 0.4849187035549003, + 0.5884208791332232, + 0.6504975717454324, + 0.4401624412678399, + 0.5136497769194297, + 0.6400241861072402, + 0.4505990531238212, + 0.5066709926933601, + 0.5852090465668155, + 0.464966163927616, + 0.4262591341848537, + 0.5923537757594188, + 0.6323436114926096, + 0.6827821881279262, + 0.6568698755765476, + 0.6070933001576094, + 0.4559687478066684, + 0.47926564831370433, + 0.4303045499313133, + 0.43651408498532374, + 0.5863320008321209, + 0.42574626033139873, + 0.5666362848489452, + 0.6079426759528365, + 0.6162960235767307, + 0.6094952407594316, + 0.4531297041971685, + 0.5139775262895722, + 0.4930518311427469, + 0.555540520333925, + 0.5822370427762927, + 0.4991890411130875, + 0.6191243721841259, + 0.46395838368522235, + 0.6320459957776895, + 0.5812507243738417, + 0.44461287437765484, + 0.6702681082171105, + 0.6405208298523595, + 0.5340773018029276, + 0.7088649415715338, + 0.42596302898296, + 0.4100492265626279, + 0.553038239414026, + 0.6889935031713913, + 0.5816596135674122, + 0.6906367171418526, + 0.5223058601716376, + 0.5033836320421325, + 0.42253037719068265, + 0.408770490523704, + 0.49677054698231254, + 0.6547179914569122, + 0.6892120658942333, + 0.4609529344734653, + 0.4110972262811929, + 0.4671986001951752, + 0.4257500485947016, + 0.6443746186835169, + 0.45433906106225874, + 0.7118691926815527, + 0.5848493831863735, + 0.48401270193397594, + 0.5475566204499002, + 0.48707829713841816, + 0.39378514618487076, + 0.5343651291242395, + 0.6351249991413007, + 0.5948772321746578, + 0.3945081247659844, + 0.4591795688054529, + 0.6854578877489432, + 0.6626651056086819, + 0.6589875236972915, + 0.5961145057574432, + 0.5224034842683754, + 0.5050296215664786, + 0.670274213330784, + 0.4581706421206367, + 0.5076616125485874, + 0.6185521850935248, + 0.5323610113158226, + 0.4658291889029201, + 0.43019344002413573, + 0.7117411817991492, + 0.6447781849656943, + 0.5249599567827521, + 0.5487879584336013, + 0.6641759284030988, + 0.6962010590386708, + 0.6641992177678657, + 0.599030093608008, + 0.4952115979311617, + 0.5283349413380637, + 0.682723274930856, + 0.6226529382557275, + 0.6495846470310351, + 0.5695834565200765, + 0.4032616525915888, + 0.7134989027701221, + 0.4217448276833253, + 0.51145323308957, + 0.40136769783415943, + 0.4894076532561119, + 0.5580916056120575, + 0.6485885509451936, + 0.4106965326936936, + 0.6446472510934458, + 0.4673510482494977, + 0.39406648345200795, + 0.6423874771462855, + 0.6761786558340641, + 0.4385113439028285, + 0.4676346308195621, + 0.5925070197682611, + 0.44892483804258965, + 0.6405852645185593, + 0.5652733259129074, + 0.6998842040306115, + 0.5638670483173848, + 0.481979342873229, + 0.4046755417448317, + 0.6846887979367473, + 0.5792278730066671, + 0.6596425969046801, + 0.4151497323575476, + 0.6596571575218719, + 0.4364064090262114, + 0.5751060557601836, + 0.5359668596341719, + 0.5665202979008935, + 0.7049248036395264, + 0.5126899812737657, + 0.6247013006767026, + 0.6940919393391642, + 0.6312703081099512, + 0.6209608375781136, + 0.5250191331381071, + 0.6811603881339178, + 0.6012772240778049, + 0.5240705363958756, + 0.5428275577913633, + 0.6278616837976532, + 0.6094376197543869, + 0.664413273587193, + 0.5327978810037328, + 0.5081904082264597, + 0.5879185440144283, + 0.585134181789603, + 0.69841199801268, + 0.6380218894631005, + 0.4313041260930196, + 0.5612681368785195, + 0.4138321830673763, + 0.5878771294676932, + 0.5098797185612908, + 0.5592526382944856, + 0.6176230476188015, + 0.45282711332647135, + 0.42211738007870586, + 0.5792285332552183, + 0.7076279584663456, + 0.5132164689447851, + 0.4016151985625877, + 0.5005768790101279, + 0.5377959771658304, + 0.673057721234926, + 0.6065864872032398, + 0.4391610804901898, + 0.40850817437123, + 0.39446820023944196, + 0.45425620949987333, + 0.4985874177791048, + 0.4829372931939674, + 0.5514862469204134, + 0.4206242253851943, + 0.5603212990032334, + 0.6974934023928568, + 0.4288000031205262, + 0.39879540428154014, + 0.3983914441773548, + 0.44503724400750494, + 0.4362484868418247, + 0.5464577473336911, + 0.6386354700698925, + 0.6964360490258216, + 0.6074255178648731, + 0.4889255879648373, + 0.3934865795908067, + 0.40546136240004793, + 0.4694791632738844, + 0.41325872314812406, + 0.4469091086747741, + 0.4260294766766455, + 0.588165405581004, + 0.5416814561602862, + 0.6283709186026429, + 0.5236609948728579, + 0.4708195061900129, + 0.5790343691265639, + 0.7150104209183179, + 0.5441991803345833, + 0.5869566798610268, + 0.528878339354435, + 0.5672384326922854, + 0.6470639293015009, + 0.48184159350299094, + 0.6723555539381239, + 0.6684037014410424, + 0.7014351471492428, + 0.6570415567811738, + 0.6937392055566047, + 0.5468629323504164, + 0.6032049009900234, + 0.65399066773744, + 0.4278210246523501, + 0.560952774050389, + 0.43559484368022805, + 0.604153545803851, + 0.6463494808969634, + 0.4280945454000952, + 0.42623824425752127, + 0.5263752768004069, + 0.6495556606751474, + 0.6079491167840757, + 0.4592774102625227, + 0.39363311546516283, + 0.4403889709103802, + 0.39452411273797156, + 0.5320644315514407, + 0.7095865556218699, + 0.45031882013899127, + 0.49049465768292244, + 0.5825939028884322, + 0.5172782086775894, + 0.6038268139231213, + 0.6511217183113365, + 0.5651893223333359, + 0.40687306412608626, + 0.6765126047069006, + 0.5471072333163356, + 0.5284893426095343, + 0.4940247572433484, + 0.544245625771729, + 0.5208865118876215, + 0.5687816791532816, + 0.6356987615509171, + 0.4441040566252022, + 0.5828037684704762, + 0.4566041667253928, + 0.6584170780907639, + 0.5807587813329892, + 0.6679508018501403, + 0.5748337311880901, + 0.4459497575648414, + 0.43660702544867913, + 0.5320573843588869, + 0.5060681164284243, + 0.5934269143622088, + 0.6486763355614453, + 0.5264476321366137, + 0.5130671626174765, + 0.6336537918009872, + 0.4411128926119485, + 0.49436674110978585, + 0.41289815974124217, + 0.6972725394716452, + 0.6412957348528412, + 0.6758141756751737, + 0.6772136263959277, + 0.6634581557758649, + 0.4336025287141016, + 0.5393126049983168, + 0.6313854940431948, + 0.6980031803670094, + 0.6209955883427614, + 0.6424396833726045, + 0.47787300970116237, + 0.504466648515734, + 0.5394270777075578, + 0.525043421417757, + 0.7073667050865478, + 0.5367630077432356, + 0.7065011969700665, + 0.5670941169229409, + 0.4219836902928154, + 0.6322683054066398, + 0.6324770443535082, + 0.611089804535338, + 0.5200107570202483, + 0.6273077281518118, + 0.4717522173672615, + 0.5520433189359997, + 0.6167768192853258, + 0.5364042499960491, + 0.6179086197333079, + 0.7098424703994268, + 0.5838418314836293, + 0.5959736545923319, + 0.4853270098949111, + 0.4206022133129632, + 0.519159623591922, + 0.5475679535238369, + 0.6307073543308682, + 0.6831658139214447, + 0.4523002243227902, + 0.4563433871498846, + 0.5360966086330026, + 0.6915524469367444, + 0.44409411169573754, + 0.41402797160812355, + 0.6733587185238037, + 0.4510086271313907, + 0.47613037440818085, + 0.6999684229851524, + 0.516502041185436, + 0.41136584639365076, + 0.43044006833760456, + 0.45307618394591437, + 0.447409188832478, + 0.48299139047502126, + 0.5284183307825878, + 0.7119717923196682, + 0.5606853971863706, + 0.6096195050579132, + 0.4862086567418617, + 0.4605482266344224, + 0.49709931236369753, + 0.4432377421368927, + 0.7132611903778745, + 0.44822647818255984, + 0.41600779021575574, + 0.45746817335712375, + 0.5825304313067328, + 0.632836728287099, + 0.5983454878921033, + 0.4726685096685376, + 0.7049351479064989, + 0.6689957927368715, + 0.432599501935786, + 0.5248017260223407, + 0.5678126234206614, + 0.700432363623254, + 0.4745561015580358, + 0.4235507793185908, + 0.5154872399868501, + 0.6945633942493479, + 0.43817102324772633, + 0.6156795375194772, + 0.5472072173013496, + 0.7004069987187196, + 0.41196843343417894, + 0.6209583786565034, + 0.4873519943723665, + 0.4707098417272138, + 0.5043181105400858, + 0.43863939508241884, + 0.6845432418502742, + 0.4592011284641393, + 0.43168614804939615, + 0.48044038398942795, + 0.4845685251344588, + 0.5246574324022515, + 0.5953138057840592, + 0.5373533169710921, + 0.692784889485674, + 0.5109811949805377, + 0.46162198178378655, + 0.41688910252946515, + 0.4333177193474465, + 0.416001490724772, + 0.598419174457079, + 0.4771103642034885, + 0.6634043045077194, + 0.6434566717242465, + 0.6108015738826118, + 0.4728634263096049, + 0.6163189699448949, + 0.4042776049245752, + 0.6434119171100962, + 0.4700744996368002, + 0.7077827030986106, + 0.43245340449390046, + 0.6267837218832019, + 0.6944811477539081, + 0.6741662463863684, + 0.6993261963219768, + 0.5559378365400114, + 0.44949983138465116, + 0.5755946351184864, + 0.5093088039178515, + 0.39731303444802885, + 0.45498028025659304, + 0.6423225761921545, + 0.6849023191180699, + 0.702100332003754, + 0.6589851998369463, + 0.5895304012453122, + 0.6881967425705677, + 0.5012963500587777, + 0.6159561153437214, + 0.6971882432829583, + 0.4274603972733564, + 0.6104200170886455, + 0.5309762848750194, + 0.4194104779341083, + 0.5831691664919242, + 0.5609940752015927, + 0.5528258668661005, + 0.4409244046990854, + 0.5234028484754637, + 0.6341570172378744, + 0.6979611715835525, + 0.4823280715897249, + 0.491996069663828, + 0.6985831324852219, + 0.5952680204555105, + 0.5413931812016325, + 0.43900133915257566, + 0.7118104223109781, + 0.420306849795229, + 0.5926656038081533, + 0.6938601163915135, + 0.6251047544619236, + 0.4538994839271886, + 0.49244027139102375, + 0.43669593795478656, + 0.4893460875118337, + 0.7003354566695694, + 0.42535721588409164, + 0.6854609317881247, + 0.7129640013160813, + 0.4062625856237518, + 0.4245339045636707, + 0.546359979896188, + 0.4504071387455426, + 0.6256778518256001, + 0.5850404240391318, + 0.5670278448795742, + 0.5457890301927284, + 0.5887512845201848, + 0.673195546338485, + 0.4878367875573539, + 0.4505555447119997, + 0.4429016349712387, + 0.5879000971621142, + 0.5237948099969321, + 0.5147737994762814, + 0.397445268718361, + 0.5685371827429901, + 0.48035665039027686, + 0.5762762860425734, + 0.6253835009409578, + 0.7079825310757033, + 0.6891492421687659, + 0.48082038904147784, + 0.6728385368145728, + 0.4759800237299206, + 0.45492729112905805, + 0.5273536905930523, + 0.6620832786552793, + 0.6082271530183876, + 0.5174435926111037, + 0.48427943702362763, + 0.48176700722059596, + 0.5763753922998038, + 0.48415730377895316, + 0.4916221563925771, + 0.6561295488164942, + 0.6346916291223746, + 0.6654819564056859, + 0.5560834962322355, + 0.6154880565837786, + 0.49282670500316966, + 0.5380100672098375, + 0.4753338562936456, + 0.4470403100182614, + 0.6107993057745476, + 0.6334375162162126, + 0.6466720459078152, + 0.45912809507568, + 0.4816739361194806, + 0.4870054973835549, + 0.6005759223212919, + 0.6679754980820636, + 0.4141615269687212, + 0.5112880972778483, + 0.698397140457399 + ], + "type": "scatter" + }, + { + "mode": "markers", + "name": "Expectation", + "x": [ + -0.006128662258061308 + ], + "y": [ + -0.061285758701568493 + ], + "type": "scatter" + }, + { + "fill": "toself", + "mode": "lines", + "name": "Mode", + "x": [ + 0.4178483805738874, + 0.4178483805738874, + 0.6762126815500766, + 0.6762126815500766, + 0.4178483805738874 + ], + "y": [ + 0.15624896603640903, + 0.393362968645088, + 0.393362968645088, + 0.15624896603640903, + 0.15624896603640903 + ], + "type": "scatter" + } + ], + "layout": { + "title": { + "text": "JPT" + }, + "xaxis": { + "title": { + "text": "relative_x" + } + }, + "yaxis": { + "title": { + "text": "relative_y" + } + }, + "template": { + "data": { + "histogram2dcontour": [ + { + "type": "histogram2dcontour", + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ] + } + ], + "choropleth": [ + { + "type": "choropleth", + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + } + ], + "histogram2d": [ + { + "type": "histogram2d", + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ] + } + ], + "heatmap": [ + { + "type": "heatmap", + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ] + } + ], + "heatmapgl": [ + { + "type": "heatmapgl", + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ] + } + ], + "contourcarpet": [ + { + "type": "contourcarpet", + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + } + ], + "contour": [ + { + "type": "contour", + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ] + } + ], + "surface": [ + { + "type": "surface", + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ] + } + ], + "mesh3d": [ + { + "type": "mesh3d", + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + } + ], + "scatter": [ + { + "marker": { + "line": { + "color": "#283442" + } + }, + "type": "scatter" + } + ], + "parcoords": [ + { + "type": "parcoords", + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + } + } + ], + "scatterpolargl": [ + { + "type": "scatterpolargl", + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + } + } + ], + "bar": [ + { + "error_x": { + "color": "#f2f5fa" + }, + "error_y": { + "color": "#f2f5fa" + }, + "marker": { + "line": { + "color": "rgb(17,17,17)", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "bar" + } + ], + "scattergeo": [ + { + "type": "scattergeo", + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + } + } + ], + "scatterpolar": [ + { + "type": "scatterpolar", + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + } + } + ], + "histogram": [ + { + "marker": { + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "histogram" + } + ], + "scattergl": [ + { + "marker": { + "line": { + "color": "#283442" + } + }, + "type": "scattergl" + } + ], + "scatter3d": [ + { + "type": "scatter3d", + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + } + } + ], + "scattermapbox": [ + { + "type": "scattermapbox", + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + } + } + ], + "scatterternary": [ + { + "type": "scatterternary", + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + } + } + ], + "scattercarpet": [ + { + "type": "scattercarpet", + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + } + } + ], + "carpet": [ + { + "aaxis": { + "endlinecolor": "#A2B1C6", + "gridcolor": "#506784", + "linecolor": "#506784", + "minorgridcolor": "#506784", + "startlinecolor": "#A2B1C6" + }, + "baxis": { + "endlinecolor": "#A2B1C6", + "gridcolor": "#506784", + "linecolor": "#506784", + "minorgridcolor": "#506784", + "startlinecolor": "#A2B1C6" + }, + "type": "carpet" + } + ], + "table": [ + { + "cells": { + "fill": { + "color": "#506784" + }, + "line": { + "color": "rgb(17,17,17)" + } + }, + "header": { + "fill": { + "color": "#2a3f5f" + }, + "line": { + "color": "rgb(17,17,17)" + } + }, + "type": "table" + } + ], + "barpolar": [ + { + "marker": { + "line": { + "color": "rgb(17,17,17)", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "barpolar" + } + ], + "pie": [ + { + "automargin": true, + "type": "pie" + } + ] + }, + "layout": { + "autotypenumbers": "strict", + "colorway": [ + "#636efa", + "#EF553B", + "#00cc96", + "#ab63fa", + "#FFA15A", + "#19d3f3", + "#FF6692", + "#B6E880", + "#FF97FF", + "#FECB52" + ], + "font": { + "color": "#f2f5fa" + }, + "hovermode": "closest", + "hoverlabel": { + "align": "left" + }, + "paper_bgcolor": "rgb(17,17,17)", + "plot_bgcolor": "rgb(17,17,17)", + "polar": { + "bgcolor": "rgb(17,17,17)", + "angularaxis": { + "gridcolor": "#506784", + "linecolor": "#506784", + "ticks": "" + }, + "radialaxis": { + "gridcolor": "#506784", + "linecolor": "#506784", + "ticks": "" + } + }, + "ternary": { + "bgcolor": "rgb(17,17,17)", + "aaxis": { + "gridcolor": "#506784", + "linecolor": "#506784", + "ticks": "" + }, + "baxis": { + "gridcolor": "#506784", + "linecolor": "#506784", + "ticks": "" + }, + "caxis": { + "gridcolor": "#506784", + "linecolor": "#506784", + "ticks": "" + } + }, + "coloraxis": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "colorscale": { + "sequential": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ], + "sequentialminus": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ], + "diverging": [ + [ + 0, + "#8e0152" + ], + [ + 0.1, + "#c51b7d" + ], + [ + 0.2, + "#de77ae" + ], + [ + 0.3, + "#f1b6da" + ], + [ + 0.4, + "#fde0ef" + ], + [ + 0.5, + "#f7f7f7" + ], + [ + 0.6, + "#e6f5d0" + ], + [ + 0.7, + "#b8e186" + ], + [ + 0.8, + "#7fbc41" + ], + [ + 0.9, + "#4d9221" + ], + [ + 1, + "#276419" + ] + ] + }, + "xaxis": { + "gridcolor": "#283442", + "linecolor": "#506784", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "#283442", + "automargin": true, + "zerolinewidth": 2 + }, + "yaxis": { + "gridcolor": "#283442", + "linecolor": "#506784", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "#283442", + "automargin": true, + "zerolinewidth": 2 + }, + "scene": { + "xaxis": { + "backgroundcolor": "rgb(17,17,17)", + "gridcolor": "#506784", + "linecolor": "#506784", + "showbackground": true, + "ticks": "", + "zerolinecolor": "#C8D4E3", + "gridwidth": 2 + }, + "yaxis": { + "backgroundcolor": "rgb(17,17,17)", + "gridcolor": "#506784", + "linecolor": "#506784", + "showbackground": true, + "ticks": "", + "zerolinecolor": "#C8D4E3", + "gridwidth": 2 + }, + "zaxis": { + "backgroundcolor": "rgb(17,17,17)", + "gridcolor": "#506784", + "linecolor": "#506784", + "showbackground": true, + "ticks": "", + "zerolinecolor": "#C8D4E3", + "gridwidth": 2 + } + }, + "shapedefaults": { + "line": { + "color": "#f2f5fa" + } + }, + "annotationdefaults": { + "arrowcolor": "#f2f5fa", + "arrowhead": 0, + "arrowwidth": 1 + }, + "geo": { + "bgcolor": "rgb(17,17,17)", + "landcolor": "rgb(17,17,17)", + "subunitcolor": "#506784", + "showland": true, + "showlakes": true, + "lakecolor": "rgb(17,17,17)" + }, + "title": { + "x": 0.05 + }, + "updatemenudefaults": { + "bgcolor": "#506784", + "borderwidth": 0 + }, + "sliderdefaults": { + "bgcolor": "#C8D4E3", + "borderwidth": 1, + "bordercolor": "rgb(17,17,17)", + "tickwidth": 0 + }, + "mapbox": { + "style": "dark" + } + } + } + }, + "config": { + "plotlyServerURL": "https://plot.ly" + } + }, + "text/html": "
    " + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "event = Event({arm:\"left\", grasp:\"front\"})\n", + "conditional_model, conditional_probability = model.conditional(event)\n", + "p_xy = conditional_model.marginal([relative_x, relative_y])\n", + "fig = go.Figure(p_xy.root.plot_2d(), p_xy.root.plotly_layout())\n", + "fig.show()" + ], + "metadata": { + "collapsed": false, + "ExecuteTime": { + "end_time": "2024-03-21T13:48:50.379158Z", + "start_time": "2024-03-21T13:48:49.463290Z" + } + }, + "id": "825dceb35326faf7", + "execution_count": 9 + }, + { + "cell_type": "markdown", + "source": [ + "Let's make a monte carlo estimate on the success probability of the new model." + ], + "metadata": { + "collapsed": false + }, + "id": "f6e58eaa8d627dcc" + }, + { + "cell_type": "code", + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 100/100 [00:06<00:00, 14.76it/s, Success Probability=0.31]\n" + ] + } + ], + "source": [ + "fpa.policy = model\n", + "fpa.sample_amount = 100\n", + "with simulated_robot:\n", + " fpa.batch_rollout()" + ], + "metadata": { + "collapsed": false, + "ExecuteTime": { + "end_time": "2024-03-21T13:48:57.163741Z", + "start_time": "2024-03-21T13:48:50.380442Z" + } + }, + "id": "6bfc00e5d93a19af", + "execution_count": 10 + }, + { + "cell_type": "markdown", + "source": [ + "We can see, that our new and improved model has a success probability of 60% as opposed to the 30% from the standard policy." + ], + "metadata": { + "collapsed": false + }, + "id": "c270cd173a43b342" + }, + { + "cell_type": "markdown", + "source": [ + "Next, we put the learned model to the test in a complex environment, where the milk is placed in a difficult to access area." + ], + "metadata": { + "collapsed": false + }, + "id": "98bfa937581a9c47" + }, + { + "cell_type": "code", + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Unknown tag \"material\" in /robot[@name='apartment']/link[@name='coffe_machine']/collision[1]\n", + "Unknown tag \"material\" in /robot[@name='apartment']/link[@name='coffe_machine']/collision[1]\n" + ] + } + ], + "source": [ + "kitchen = Object(\"kitchen\", ObjectType.ENVIRONMENT, \"apartment.urdf\")\n", + "\n", + "milk.set_pose(Pose([0.5, 3.15, 1.04]))\n", + "milk_description = ObjectDesignatorDescription(types=[ObjectType.MILK]).ground()\n", + "fpa = MoveAndPickUp(milk_description, arms=[Arms.LEFT.value, Arms.RIGHT.value, Arms.BOTH.value], grasps=[Grasp.FRONT.value, Grasp.LEFT.value, Grasp.RIGHT.value, Grasp.TOP.value], policy=model)\n", + "fpa.sample_amount = 200\n" + ], + "metadata": { + "collapsed": false, + "ExecuteTime": { + "end_time": "2024-03-21T13:48:59.559168Z", + "start_time": "2024-03-21T13:48:57.164442Z" + } + }, + "id": "90d7cb5e1e1cc7fd", + "execution_count": 11 + }, + { + "cell_type": "code", + "outputs": [ + { + "data": { + "application/vnd.plotly.v1+json": { + "data": [ + { + "hovertext": [ + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 1.1238803101090267", + "Likelihood: 1.1238803101090267", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.344691636628682", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 1.1238803101090267", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.344691636628682", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.344691636628682", + "Likelihood: 0.344691636628682", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.344691636628682", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 1.1238803101090267", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 1.1238803101090267", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 1.1238803101090267", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 1.1238803101090267", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 1.1238803101090267", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.344691636628682", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.344691636628682", + "Likelihood: 0.344691636628682", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 1.1238803101090267", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 1.1238803101090267", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 1.1238803101090267", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 1.1238803101090267", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 1.1238803101090267", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.18575458686579954", + "Likelihood: 1.1238803101090267", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 1.1238803101090267", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.344691636628682", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 1.1238803101090267", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.344691636628682", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 1.1238803101090267", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.344691636628682", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.5965905556432232", + "Likelihood: 1.1238803101090267", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 1.1238803101090267", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.40745287460504737", + "Likelihood: 1.1238803101090267", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 1.1238803101090267", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 1.1238803101090267", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.344691636628682", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.344691636628682", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 1.1238803101090267", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 1.1238803101090267", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 1.1238803101090267", + "Likelihood: 0.40745287460504737", + "Likelihood: 1.1238803101090267", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.344691636628682", + "Likelihood: 1.1238803101090267", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.5965905556432232", + "Likelihood: 1.1238803101090267", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 1.1238803101090267", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 1.1238803101090267", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 1.1238803101090267", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 1.1238803101090267", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 1.1238803101090267", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.344691636628682", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 1.1238803101090267", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 1.1238803101090267", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 1.1238803101090267", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.344691636628682", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 1.1238803101090267", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 1.1238803101090267", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 1.1238803101090267", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.344691636628682", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 1.1238803101090267", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 1.1238803101090267", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 1.1238803101090267", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.344691636628682", + "Likelihood: 1.1238803101090267", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.40745287460504737", + "Likelihood: 1.1238803101090267", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 1.1238803101090267", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 1.1238803101090267", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.344691636628682", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 1.1238803101090267", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 1.1238803101090267", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.344691636628682", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 1.1238803101090267", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.18575458686579954", + "Likelihood: 1.1238803101090267", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.344691636628682", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.18575458686579954", + "Likelihood: 1.1238803101090267", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 1.1238803101090267", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.344691636628682", + "Likelihood: 1.1238803101090267", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.344691636628682", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 1.1238803101090267", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.18575458686579954", + "Likelihood: 1.1238803101090267", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.344691636628682", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.5965905556432232", + "Likelihood: 1.1238803101090267", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.344691636628682", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 1.1238803101090267", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.344691636628682", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.344691636628682", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 1.1238803101090267", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.18575458686579954", + "Likelihood: 1.1238803101090267", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.344691636628682", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.40745287460504737", + "Likelihood: 1.1238803101090267", + "Likelihood: 0.344691636628682", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.344691636628682", + "Likelihood: 0.5965905556432232", + "Likelihood: 1.1238803101090267", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.18575458686579954", + "Likelihood: 1.1238803101090267", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 1.1238803101090267", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 1.1238803101090267", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.18575458686579954", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.344691636628682", + "Likelihood: 0.344691636628682", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.22169828773924782", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.22169828773924782", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.22169828773924782", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.22169828773924782", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.22169828773924782", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.22169828773924782", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.22169828773924782", + "Likelihood: 0.22169828773924782", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.22169828773924782", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.22169828773924782", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.22169828773924782", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.22169828773924782", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.22169828773924782", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.22169828773924782", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.22169828773924782", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.22169828773924782", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.22169828773924782", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.22169828773924782", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.22169828773924782", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.22169828773924782", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.22169828773924782", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.22169828773924782", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.22169828773924782", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.22169828773924782", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.22169828773924782", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.22169828773924782", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.22169828773924782", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.22169828773924782", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.22169828773924782", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.22169828773924782", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.22169828773924782", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.22169828773924782", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.22169828773924782", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.22169828773924782", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.22169828773924782", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.22169828773924782", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.22169828773924782", + "Likelihood: 0.22169828773924782", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.22169828773924782", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.22169828773924782", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.22169828773924782", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.22169828773924782", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.22169828773924782", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.22169828773924782", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.22169828773924782", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.22169828773924782", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.22169828773924782", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.22169828773924782", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.22169828773924782", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.22169828773924782", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.22169828773924782", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.22169828773924782", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.22169828773924782", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.22169828773924782", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.22169828773924782", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.22169828773924782", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.22169828773924782", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.22169828773924782", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.22169828773924782", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.22169828773924782", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.22169828773924782", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.22169828773924782", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.22169828773924782", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.22169828773924782", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.22169828773924782", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.22169828773924782", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.22169828773924782", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.22169828773924782", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.22169828773924782", + "Likelihood: 0.22169828773924782", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.22169828773924782", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.22169828773924782", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.22169828773924782", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.22169828773924782", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.22169828773924782", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.22169828773924782", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.22169828773924782", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.22169828773924782", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.22169828773924782", + "Likelihood: 0.22169828773924782", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.22169828773924782", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.22169828773924782", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.22169828773924782", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.22169828773924782", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.22169828773924782", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.22169828773924782", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.22169828773924782", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.22169828773924782", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.22169828773924782", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.22169828773924782", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.22169828773924782", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.40745287460504737", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.5965905556432232", + "Likelihood: 0.344691636628682", + "Likelihood: 0.344691636628682", + "Likelihood: 0.344691636628682", + "Likelihood: 0.344691636628682", + "Likelihood: 0.344691636628682", + "Likelihood: 0.344691636628682", + "Likelihood: 0.344691636628682", + "Likelihood: 0.344691636628682", + "Likelihood: 0.344691636628682", + "Likelihood: 0.15893704976288248", + "Likelihood: 0.344691636628682", + "Likelihood: 0.344691636628682", + "Likelihood: 0.344691636628682", + "Likelihood: 0.344691636628682", + "Likelihood: 0.344691636628682", + "Likelihood: 0.344691636628682", + "Likelihood: 0.344691636628682", + "Likelihood: 0.344691636628682", + "Likelihood: 0.344691636628682", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.36292570780171296", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.36292570780171296", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.36292570780171296", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.36292570780171296", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.36292570780171296", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.36292570780171296", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.36292570780171296", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.36292570780171296", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.36292570780171296", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.36292570780171296", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.36292570780171296", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.36292570780171296", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.36292570780171296", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.36292570780171296", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.36292570780171296", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.36292570780171296", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.36292570780171296", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.36292570780171296", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.36292570780171296", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.36292570780171296", + "Likelihood: 0.36292570780171296", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.36292570780171296", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.36292570780171296", + "Likelihood: 0.36292570780171296", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.36292570780171296", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.36292570780171296", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.36292570780171296", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.36292570780171296", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.36292570780171296", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.36292570780171296", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.36292570780171296", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.36292570780171296", + "Likelihood: 0.36292570780171296", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.36292570780171296", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.36292570780171296", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.36292570780171296", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.36292570780171296", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.36292570780171296", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.36292570780171296", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.36292570780171296", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.36292570780171296", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.36292570780171296", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.36292570780171296", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.36292570780171296", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.36292570780171296", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.36292570780171296", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124", + "Likelihood: 0.5486802946675124" + ], + "marker": { + "color": [ + 0.344691636628682, + 0.40745287460504737, + 1.1238803101090267, + 1.1238803101090267, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.18575458686579954, + 0.40745287460504737, + 0.344691636628682, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.18575458686579954, + 0.18575458686579954, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.5965905556432232, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.5965905556432232, + 0.40745287460504737, + 0.40745287460504737, + 0.5965905556432232, + 0.40745287460504737, + 0.40745287460504737, + 0.5486802946675124, + 0.5965905556432232, + 0.5965905556432232, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.344691636628682, + 0.344691636628682, + 0.40745287460504737, + 1.1238803101090267, + 0.5965905556432232, + 0.344691636628682, + 0.5486802946675124, + 0.344691636628682, + 0.344691636628682, + 0.18575458686579954, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.18575458686579954, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.5486802946675124, + 0.40745287460504737, + 0.344691636628682, + 0.344691636628682, + 0.5965905556432232, + 0.40745287460504737, + 0.5965905556432232, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 1.1238803101090267, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.5965905556432232, + 0.18575458686579954, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.18575458686579954, + 0.18575458686579954, + 0.344691636628682, + 0.40745287460504737, + 1.1238803101090267, + 0.40745287460504737, + 0.344691636628682, + 0.5965905556432232, + 0.40745287460504737, + 0.40745287460504737, + 0.18575458686579954, + 0.40745287460504737, + 0.40745287460504737, + 0.5965905556432232, + 0.40745287460504737, + 0.18575458686579954, + 0.5486802946675124, + 0.18575458686579954, + 0.5965905556432232, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.5486802946675124, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.5965905556432232, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.5965905556432232, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 1.1238803101090267, + 0.5965905556432232, + 0.40745287460504737, + 0.18575458686579954, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 1.1238803101090267, + 0.40745287460504737, + 0.344691636628682, + 0.344691636628682, + 0.40745287460504737, + 1.1238803101090267, + 0.40745287460504737, + 0.18575458686579954, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.5965905556432232, + 0.344691636628682, + 0.18575458686579954, + 0.40745287460504737, + 0.40745287460504737, + 0.5965905556432232, + 0.344691636628682, + 0.344691636628682, + 0.344691636628682, + 0.40745287460504737, + 0.18575458686579954, + 0.40745287460504737, + 0.344691636628682, + 1.1238803101090267, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.5965905556432232, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.5965905556432232, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.18575458686579954, + 0.344691636628682, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.18575458686579954, + 0.40745287460504737, + 0.5965905556432232, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.18575458686579954, + 0.5965905556432232, + 0.40745287460504737, + 0.5965905556432232, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.18575458686579954, + 0.40745287460504737, + 0.5965905556432232, + 0.40745287460504737, + 0.5965905556432232, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.18575458686579954, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.5965905556432232, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.5965905556432232, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.18575458686579954, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.5965905556432232, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 0.5965905556432232, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 1.1238803101090267, + 0.5486802946675124, + 0.40745287460504737, + 0.5965905556432232, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 0.5965905556432232, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 0.5486802946675124, + 0.344691636628682, + 0.40745287460504737, + 1.1238803101090267, + 0.40745287460504737, + 0.40745287460504737, + 0.18575458686579954, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.18575458686579954, + 0.5965905556432232, + 0.40745287460504737, + 0.40745287460504737, + 0.5965905556432232, + 0.40745287460504737, + 0.18575458686579954, + 0.40745287460504737, + 0.40745287460504737, + 0.5486802946675124, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.5965905556432232, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.5965905556432232, + 0.18575458686579954, + 0.40745287460504737, + 0.40745287460504737, + 1.1238803101090267, + 0.18575458686579954, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.5486802946675124, + 0.40745287460504737, + 0.40745287460504737, + 1.1238803101090267, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.5965905556432232, + 0.40745287460504737, + 0.40745287460504737, + 0.5486802946675124, + 0.18575458686579954, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.18575458686579954, + 1.1238803101090267, + 0.40745287460504737, + 0.40745287460504737, + 0.5965905556432232, + 0.40745287460504737, + 1.1238803101090267, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.18575458686579954, + 0.18575458686579954, + 0.40745287460504737, + 0.5486802946675124, + 0.5965905556432232, + 0.40745287460504737, + 0.40745287460504737, + 0.5965905556432232, + 0.5965905556432232, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.5965905556432232, + 0.5965905556432232, + 0.40745287460504737, + 0.18575458686579954, + 0.40745287460504737, + 0.5965905556432232, + 0.18575458686579954, + 0.40745287460504737, + 0.40745287460504737, + 0.5965905556432232, + 0.5965905556432232, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.5965905556432232, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.344691636628682, + 0.5965905556432232, + 0.40745287460504737, + 1.1238803101090267, + 0.344691636628682, + 0.40745287460504737, + 0.18575458686579954, + 0.5965905556432232, + 0.18575458686579954, + 0.344691636628682, + 0.5965905556432232, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 1.1238803101090267, + 0.40745287460504737, + 0.5965905556432232, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.18575458686579954, + 0.40745287460504737, + 0.40745287460504737, + 0.5486802946675124, + 0.344691636628682, + 0.40745287460504737, + 0.18575458686579954, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.18575458686579954, + 0.5965905556432232, + 0.18575458686579954, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.5965905556432232, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.5965905556432232, + 0.18575458686579954, + 0.18575458686579954, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 0.5965905556432232, + 0.18575458686579954, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.5486802946675124, + 0.5965905556432232, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.5486802946675124, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.5965905556432232, + 0.5965905556432232, + 0.344691636628682, + 0.344691636628682, + 0.40745287460504737, + 0.5965905556432232, + 0.40745287460504737, + 0.18575458686579954, + 0.18575458686579954, + 0.40745287460504737, + 0.5965905556432232, + 0.5486802946675124, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.5965905556432232, + 0.18575458686579954, + 0.40745287460504737, + 0.18575458686579954, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.18575458686579954, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.5965905556432232, + 1.1238803101090267, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.18575458686579954, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 0.18575458686579954, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.18575458686579954, + 0.40745287460504737, + 0.18575458686579954, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.5965905556432232, + 0.40745287460504737, + 1.1238803101090267, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.5965905556432232, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.5965905556432232, + 0.5965905556432232, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.344691636628682, + 0.40745287460504737, + 0.18575458686579954, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.18575458686579954, + 0.40745287460504737, + 0.40745287460504737, + 0.5965905556432232, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.5965905556432232, + 0.40745287460504737, + 0.40745287460504737, + 0.5965905556432232, + 0.40745287460504737, + 0.5965905556432232, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.5486802946675124, + 0.40745287460504737, + 1.1238803101090267, + 0.344691636628682, + 0.40745287460504737, + 1.1238803101090267, + 0.40745287460504737, + 0.344691636628682, + 0.344691636628682, + 0.40745287460504737, + 0.344691636628682, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 1.1238803101090267, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.5965905556432232, + 0.344691636628682, + 0.5965905556432232, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.5486802946675124, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.5965905556432232, + 0.40745287460504737, + 0.18575458686579954, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.5965905556432232, + 0.5965905556432232, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 0.5965905556432232, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.344691636628682, + 0.18575458686579954, + 0.40745287460504737, + 0.5965905556432232, + 1.1238803101090267, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.5965905556432232, + 0.40745287460504737, + 0.5965905556432232, + 0.5965905556432232, + 0.40745287460504737, + 1.1238803101090267, + 0.18575458686579954, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.5965905556432232, + 0.18575458686579954, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.5965905556432232, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.5965905556432232, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 1.1238803101090267, + 0.40745287460504737, + 1.1238803101090267, + 0.18575458686579954, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.5965905556432232, + 0.5965905556432232, + 0.344691636628682, + 1.1238803101090267, + 0.5965905556432232, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.5965905556432232, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.5965905556432232, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.5965905556432232, + 0.5965905556432232, + 0.344691636628682, + 0.40745287460504737, + 0.18575458686579954, + 0.40745287460504737, + 0.5965905556432232, + 0.5965905556432232, + 0.40745287460504737, + 0.344691636628682, + 0.18575458686579954, + 0.5965905556432232, + 1.1238803101090267, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.344691636628682, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.5965905556432232, + 0.5486802946675124, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.18575458686579954, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.5486802946675124, + 0.40745287460504737, + 0.344691636628682, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 1.1238803101090267, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.5965905556432232, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 0.344691636628682, + 0.18575458686579954, + 0.40745287460504737, + 0.18575458686579954, + 0.40745287460504737, + 0.40745287460504737, + 0.18575458686579954, + 0.5965905556432232, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.344691636628682, + 0.40745287460504737, + 0.18575458686579954, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.18575458686579954, + 0.40745287460504737, + 0.40745287460504737, + 0.5965905556432232, + 0.40745287460504737, + 0.5965905556432232, + 0.5965905556432232, + 0.344691636628682, + 0.40745287460504737, + 0.5965905556432232, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.18575458686579954, + 0.40745287460504737, + 0.5965905556432232, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 1.1238803101090267, + 0.40745287460504737, + 0.344691636628682, + 0.18575458686579954, + 0.5965905556432232, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.5965905556432232, + 0.18575458686579954, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 1.1238803101090267, + 0.5965905556432232, + 0.18575458686579954, + 0.5965905556432232, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.5965905556432232, + 0.5965905556432232, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 1.1238803101090267, + 0.18575458686579954, + 0.40745287460504737, + 0.344691636628682, + 0.344691636628682, + 0.40745287460504737, + 1.1238803101090267, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.5965905556432232, + 0.344691636628682, + 0.18575458686579954, + 0.5965905556432232, + 0.5965905556432232, + 0.40745287460504737, + 0.40745287460504737, + 0.5965905556432232, + 0.40745287460504737, + 0.40745287460504737, + 0.5965905556432232, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.5965905556432232, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 0.5965905556432232, + 0.40745287460504737, + 0.18575458686579954, + 0.40745287460504737, + 0.40745287460504737, + 0.5965905556432232, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 1.1238803101090267, + 0.5965905556432232, + 0.40745287460504737, + 0.5965905556432232, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.18575458686579954, + 0.40745287460504737, + 0.40745287460504737, + 0.18575458686579954, + 0.40745287460504737, + 0.5965905556432232, + 0.18575458686579954, + 0.40745287460504737, + 0.5965905556432232, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.18575458686579954, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 0.5965905556432232, + 0.40745287460504737, + 0.40745287460504737, + 1.1238803101090267, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.5965905556432232, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.18575458686579954, + 0.40745287460504737, + 0.5965905556432232, + 0.40745287460504737, + 0.5486802946675124, + 0.40745287460504737, + 0.344691636628682, + 0.5965905556432232, + 0.5965905556432232, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 0.5965905556432232, + 0.5965905556432232, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 1.1238803101090267, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.5965905556432232, + 0.5965905556432232, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.344691636628682, + 0.5486802946675124, + 0.5965905556432232, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.5965905556432232, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 1.1238803101090267, + 0.40745287460504737, + 0.5486802946675124, + 0.40745287460504737, + 0.5486802946675124, + 0.5486802946675124, + 0.40745287460504737, + 0.40745287460504737, + 0.5965905556432232, + 0.40745287460504737, + 0.5965905556432232, + 0.40745287460504737, + 1.1238803101090267, + 0.5486802946675124, + 0.40745287460504737, + 0.344691636628682, + 0.5965905556432232, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.18575458686579954, + 0.40745287460504737, + 0.5486802946675124, + 0.5965905556432232, + 0.40745287460504737, + 1.1238803101090267, + 0.40745287460504737, + 0.5965905556432232, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.18575458686579954, + 0.344691636628682, + 0.18575458686579954, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 0.5965905556432232, + 0.40745287460504737, + 0.40745287460504737, + 1.1238803101090267, + 0.344691636628682, + 0.40745287460504737, + 0.5965905556432232, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 0.18575458686579954, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.5486802946675124, + 0.5965905556432232, + 0.5965905556432232, + 0.5486802946675124, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 1.1238803101090267, + 0.5965905556432232, + 0.18575458686579954, + 0.5965905556432232, + 0.18575458686579954, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.5486802946675124, + 0.40745287460504737, + 0.5965905556432232, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.5965905556432232, + 1.1238803101090267, + 0.5486802946675124, + 0.5965905556432232, + 0.344691636628682, + 1.1238803101090267, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.18575458686579954, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.5965905556432232, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 0.5965905556432232, + 0.5965905556432232, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.18575458686579954, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.18575458686579954, + 0.40745287460504737, + 0.5486802946675124, + 0.40745287460504737, + 0.5965905556432232, + 0.40745287460504737, + 0.18575458686579954, + 0.40745287460504737, + 1.1238803101090267, + 0.5965905556432232, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.5965905556432232, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.5965905556432232, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.5965905556432232, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.5965905556432232, + 0.40745287460504737, + 0.40745287460504737, + 0.5965905556432232, + 0.5965905556432232, + 0.18575458686579954, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.5965905556432232, + 0.5965905556432232, + 0.40745287460504737, + 0.5486802946675124, + 0.5965905556432232, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.5486802946675124, + 0.344691636628682, + 0.40745287460504737, + 0.18575458686579954, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.18575458686579954, + 0.40745287460504737, + 0.18575458686579954, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.5965905556432232, + 0.5486802946675124, + 0.40745287460504737, + 0.5965905556432232, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.18575458686579954, + 0.18575458686579954, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 1.1238803101090267, + 0.40745287460504737, + 0.40745287460504737, + 0.18575458686579954, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 0.18575458686579954, + 0.344691636628682, + 0.40745287460504737, + 0.344691636628682, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 1.1238803101090267, + 0.5965905556432232, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 0.5965905556432232, + 0.5965905556432232, + 0.344691636628682, + 0.344691636628682, + 0.40745287460504737, + 0.5486802946675124, + 0.40745287460504737, + 0.344691636628682, + 0.5965905556432232, + 0.40745287460504737, + 0.40745287460504737, + 0.5965905556432232, + 0.5965905556432232, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.5486802946675124, + 0.40745287460504737, + 0.5965905556432232, + 0.40745287460504737, + 0.344691636628682, + 0.344691636628682, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 0.5486802946675124, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.18575458686579954, + 0.40745287460504737, + 0.40745287460504737, + 0.5965905556432232, + 0.5965905556432232, + 1.1238803101090267, + 0.40745287460504737, + 0.40745287460504737, + 0.18575458686579954, + 0.344691636628682, + 0.40745287460504737, + 0.5486802946675124, + 0.40745287460504737, + 0.344691636628682, + 0.5486802946675124, + 0.40745287460504737, + 0.18575458686579954, + 0.5965905556432232, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.18575458686579954, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.18575458686579954, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 1.1238803101090267, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.5965905556432232, + 0.40745287460504737, + 0.40745287460504737, + 0.5965905556432232, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.5965905556432232, + 0.5965905556432232, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.5965905556432232, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.5965905556432232, + 0.40745287460504737, + 0.344691636628682, + 0.344691636628682, + 0.5965905556432232, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.344691636628682, + 0.40745287460504737, + 1.1238803101090267, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.5486802946675124, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.5965905556432232, + 0.5965905556432232, + 0.18575458686579954, + 0.40745287460504737, + 0.5965905556432232, + 0.5965905556432232, + 0.344691636628682, + 0.40745287460504737, + 0.344691636628682, + 0.18575458686579954, + 1.1238803101090267, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.5965905556432232, + 0.40745287460504737, + 0.40745287460504737, + 0.5965905556432232, + 0.5965905556432232, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.18575458686579954, + 0.344691636628682, + 0.5486802946675124, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 0.18575458686579954, + 0.40745287460504737, + 0.18575458686579954, + 0.40745287460504737, + 0.40745287460504737, + 0.18575458686579954, + 0.18575458686579954, + 1.1238803101090267, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 1.1238803101090267, + 0.40745287460504737, + 0.40745287460504737, + 0.18575458686579954, + 0.5965905556432232, + 0.5965905556432232, + 0.344691636628682, + 1.1238803101090267, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.5965905556432232, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.18575458686579954, + 0.344691636628682, + 0.5486802946675124, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 1.1238803101090267, + 0.18575458686579954, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.5965905556432232, + 0.40745287460504737, + 0.5486802946675124, + 0.40745287460504737, + 0.5965905556432232, + 0.40745287460504737, + 0.40745287460504737, + 0.5965905556432232, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.18575458686579954, + 0.40745287460504737, + 0.18575458686579954, + 1.1238803101090267, + 0.40745287460504737, + 0.5965905556432232, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.5486802946675124, + 0.40745287460504737, + 0.40745287460504737, + 0.5965905556432232, + 0.18575458686579954, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 0.18575458686579954, + 0.5486802946675124, + 0.5486802946675124, + 0.40745287460504737, + 0.344691636628682, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.18575458686579954, + 0.40745287460504737, + 0.40745287460504737, + 0.5486802946675124, + 0.344691636628682, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.5486802946675124, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.18575458686579954, + 0.40745287460504737, + 0.40745287460504737, + 0.18575458686579954, + 0.18575458686579954, + 0.40745287460504737, + 0.5486802946675124, + 0.5965905556432232, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.18575458686579954, + 0.5965905556432232, + 1.1238803101090267, + 0.5486802946675124, + 0.40745287460504737, + 0.40745287460504737, + 0.5965905556432232, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.18575458686579954, + 0.40745287460504737, + 0.18575458686579954, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 0.18575458686579954, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.5965905556432232, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.5965905556432232, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.344691636628682, + 0.5965905556432232, + 0.344691636628682, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 1.1238803101090267, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 0.344691636628682, + 0.344691636628682, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.5965905556432232, + 0.5486802946675124, + 0.5965905556432232, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 0.5965905556432232, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.40745287460504737, + 0.5965905556432232, + 0.18575458686579954, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.5965905556432232, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.5965905556432232, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.18575458686579954, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.18575458686579954, + 0.5965905556432232, + 0.40745287460504737, + 0.40745287460504737, + 0.18575458686579954, + 0.5965905556432232, + 0.40745287460504737, + 0.344691636628682, + 0.344691636628682, + 0.40745287460504737, + 0.5486802946675124, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.5965905556432232, + 0.344691636628682, + 0.40745287460504737, + 0.5965905556432232, + 0.40745287460504737, + 0.18575458686579954, + 0.18575458686579954, + 0.18575458686579954, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.18575458686579954, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.5965905556432232, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.5965905556432232, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.344691636628682, + 0.5486802946675124, + 0.40745287460504737, + 0.40745287460504737, + 1.1238803101090267, + 0.5965905556432232, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 0.18575458686579954, + 0.40745287460504737, + 0.40745287460504737, + 0.5965905556432232, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 0.344691636628682, + 0.5965905556432232, + 0.40745287460504737, + 0.5965905556432232, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.5486802946675124, + 0.5486802946675124, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.5965905556432232, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.18575458686579954, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.5965905556432232, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.18575458686579954, + 1.1238803101090267, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.5965905556432232, + 0.344691636628682, + 0.18575458686579954, + 0.344691636628682, + 0.40745287460504737, + 0.18575458686579954, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.5965905556432232, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.18575458686579954, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.5965905556432232, + 0.40745287460504737, + 0.40745287460504737, + 0.5965905556432232, + 0.5965905556432232, + 0.40745287460504737, + 0.40745287460504737, + 0.18575458686579954, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.5486802946675124, + 0.40745287460504737, + 1.1238803101090267, + 0.344691636628682, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.5965905556432232, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.5486802946675124, + 0.40745287460504737, + 0.5486802946675124, + 0.40745287460504737, + 0.18575458686579954, + 0.5965905556432232, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.5965905556432232, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.5965905556432232, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.344691636628682, + 0.5965905556432232, + 1.1238803101090267, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.18575458686579954, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.5486802946675124, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.5486802946675124, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 0.18575458686579954, + 1.1238803101090267, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 1.1238803101090267, + 0.5965905556432232, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 0.5965905556432232, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.5965905556432232, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 1.1238803101090267, + 0.40745287460504737, + 0.40745287460504737, + 0.344691636628682, + 0.40745287460504737, + 0.5965905556432232, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.18575458686579954, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.5965905556432232, + 0.40745287460504737, + 0.5486802946675124, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.5965905556432232, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.18575458686579954, + 0.40745287460504737, + 0.344691636628682, + 0.344691636628682, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.22169828773924782, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.22169828773924782, + 0.40745287460504737, + 0.40745287460504737, + 0.22169828773924782, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.22169828773924782, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.22169828773924782, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.22169828773924782, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.22169828773924782, + 0.22169828773924782, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.22169828773924782, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.22169828773924782, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.22169828773924782, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.22169828773924782, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.22169828773924782, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.22169828773924782, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.22169828773924782, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.22169828773924782, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.22169828773924782, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.22169828773924782, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.22169828773924782, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.22169828773924782, + 0.40745287460504737, + 0.22169828773924782, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.22169828773924782, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.22169828773924782, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.22169828773924782, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.22169828773924782, + 0.40745287460504737, + 0.22169828773924782, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.22169828773924782, + 0.40745287460504737, + 0.40745287460504737, + 0.22169828773924782, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.22169828773924782, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.22169828773924782, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.22169828773924782, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.22169828773924782, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.22169828773924782, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.22169828773924782, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.22169828773924782, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.22169828773924782, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.22169828773924782, + 0.22169828773924782, + 0.40745287460504737, + 0.40745287460504737, + 0.22169828773924782, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.22169828773924782, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.22169828773924782, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.22169828773924782, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.22169828773924782, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.22169828773924782, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.22169828773924782, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.22169828773924782, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.22169828773924782, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.22169828773924782, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.22169828773924782, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.22169828773924782, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.22169828773924782, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.22169828773924782, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.22169828773924782, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.22169828773924782, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.22169828773924782, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.22169828773924782, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.22169828773924782, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.22169828773924782, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.22169828773924782, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.22169828773924782, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.22169828773924782, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.22169828773924782, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.22169828773924782, + 0.40745287460504737, + 0.40745287460504737, + 0.22169828773924782, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.22169828773924782, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.22169828773924782, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.22169828773924782, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.22169828773924782, + 0.40745287460504737, + 0.40745287460504737, + 0.22169828773924782, + 0.22169828773924782, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.22169828773924782, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.22169828773924782, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.22169828773924782, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.22169828773924782, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.22169828773924782, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.22169828773924782, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.22169828773924782, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.22169828773924782, + 0.40745287460504737, + 0.40745287460504737, + 0.22169828773924782, + 0.22169828773924782, + 0.40745287460504737, + 0.22169828773924782, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.22169828773924782, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.22169828773924782, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.22169828773924782, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.22169828773924782, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.22169828773924782, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.22169828773924782, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.22169828773924782, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.22169828773924782, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.22169828773924782, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.22169828773924782, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.40745287460504737, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.5965905556432232, + 0.344691636628682, + 0.344691636628682, + 0.344691636628682, + 0.344691636628682, + 0.344691636628682, + 0.344691636628682, + 0.344691636628682, + 0.344691636628682, + 0.344691636628682, + 0.15893704976288248, + 0.344691636628682, + 0.344691636628682, + 0.344691636628682, + 0.344691636628682, + 0.344691636628682, + 0.344691636628682, + 0.344691636628682, + 0.344691636628682, + 0.344691636628682, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.36292570780171296, + 0.5486802946675124, + 0.5486802946675124, + 0.36292570780171296, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.36292570780171296, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.36292570780171296, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.36292570780171296, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.36292570780171296, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.36292570780171296, + 0.5486802946675124, + 0.36292570780171296, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.36292570780171296, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.36292570780171296, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.36292570780171296, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.36292570780171296, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.36292570780171296, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.36292570780171296, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.36292570780171296, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.36292570780171296, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.36292570780171296, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.36292570780171296, + 0.5486802946675124, + 0.36292570780171296, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.36292570780171296, + 0.36292570780171296, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.36292570780171296, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.36292570780171296, + 0.36292570780171296, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.36292570780171296, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.36292570780171296, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.36292570780171296, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.36292570780171296, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.36292570780171296, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.36292570780171296, + 0.5486802946675124, + 0.5486802946675124, + 0.36292570780171296, + 0.5486802946675124, + 0.5486802946675124, + 0.36292570780171296, + 0.36292570780171296, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.36292570780171296, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.36292570780171296, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.36292570780171296, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.36292570780171296, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.36292570780171296, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.36292570780171296, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.36292570780171296, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.36292570780171296, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.36292570780171296, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.36292570780171296, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.36292570780171296, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.36292570780171296, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.36292570780171296, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124, + 0.5486802946675124 + ] + }, + "mode": "markers", + "name": "Samples", + "x": [ + -0.5054885099117004, + 0.5544019130358191, + 0.6465415925726117, + 0.5653704267974764, + 0.22882361554909503, + 0.022373648538888125, + 0.6574049213255879, + -0.2201693096148264, + 0.4670589259215312, + -0.5944170432036455, + -0.28578948101801577, + 0.5088841610270673, + -0.2479555474158764, + -0.5202670033024328, + -0.019980114460358744, + -0.0018206038353352216, + 0.39306701060721627, + -0.42189460282822017, + 0.14667933027800062, + 0.07913616951058433, + 0.3389043190063912, + 0.6533072162326867, + 0.5541027182533327, + -0.2764181719671143, + 0.6577510443753245, + -0.3482070806886038, + 0.13764097102799933, + -0.11451344438018018, + 0.6523498839263238, + 0.6010946777054926, + 0.3555671677338055, + 0.7047426774308712, + -0.641820715366076, + -0.6398567553194306, + -0.4116458128082596, + -0.13059162449168216, + -0.6424720993460674, + 0.49833735745009644, + 0.3621987792532524, + 0.11330285483728042, + 0.5596681281399141, + -0.5479736209909093, + 0.45720718455141296, + -0.5400220225939456, + -0.28471434490860176, + -0.1666800643049049, + 0.42830246604149846, + -0.5282303695609815, + -0.49107463868491336, + 0.3140671302909428, + 0.45418463757432725, + -0.6190926615873668, + -0.5051302805187237, + -0.22584528519605196, + -0.6930253509819768, + -0.2870234350699684, + -0.10599911744197543, + -0.5373919688882629, + -0.0886802928478071, + 0.12077274288493278, + -0.6196249953515058, + 0.07669264217322092, + 0.11893538425220662, + 0.011985452647678585, + 0.6536875443137165, + 0.4435084026334679, + -0.2261213306186307, + -0.07952281960933916, + -0.04381434363784864, + 0.4214420808509176, + 0.05775210508565387, + 0.2967828720738255, + -0.6712907582765341, + -0.6566737182824577, + 0.4560906060535572, + 0.02630306534796012, + -0.1698687572215456, + 0.6214608902327832, + 0.09748937449061412, + 0.3553657026781203, + -0.17709403693302472, + -0.34643859865605375, + -0.016718761736664423, + -0.6316376442003354, + -0.3984685793499152, + 0.17717079078140008, + 0.5177061091775241, + 0.6931463862261202, + 0.6175488118741763, + -0.31015238311987325, + -0.636607644325355, + -0.1932477761732423, + 0.3275318559682743, + 0.18198313020964652, + 0.6241378217459996, + 0.12907011393846124, + -0.27324627396634565, + 0.33027439532396663, + 0.13893331045021584, + -0.4132701275566833, + 0.13223388796264135, + 0.1424705338486334, + 0.01947381178967944, + 0.05175899034062559, + 0.6271169745423508, + 0.5647047295434879, + -0.6321433335394628, + 0.409956451003193, + 0.16805462007577232, + -0.2941048177406229, + 0.18359168229533895, + -0.6673492632607388, + 0.497061401556369, + -0.561095897679825, + 0.5326900165361397, + 0.6793218507925927, + 0.726945027696863, + 0.36526653909385587, + 0.20494038223244415, + 0.621903260364322, + 0.5987432928582916, + 0.08059937250455418, + -0.4343117267436658, + 0.33362850368030306, + 0.6289492701793926, + 0.12794265199539878, + -0.19188516293979163, + 0.18393814411863318, + 0.3927273020851152, + 0.5246815736335382, + 0.6334544879386164, + 0.48282311579566617, + 0.6838634131746242, + 0.30554909871349634, + 0.3899227950013675, + -0.5060352267124264, + -0.6280015180143976, + 0.5266495488845657, + -0.18023872798588325, + 0.2747809293422294, + 0.444659957021748, + 0.4895232854541731, + -0.5708495562491983, + 0.27160028641924305, + 0.031873863381078005, + -0.1566975197559024, + -0.007721099730944592, + -0.39089799916229845, + 0.27211891701015367, + -0.36824622406062135, + -0.12451591851043642, + 0.5667039384791861, + 0.015398483746554725, + -0.6810612583466602, + -0.4335250120619058, + -0.14947020221800378, + -0.5398367230155151, + -0.49484516818149393, + 0.2040602443261308, + 0.5099510227512087, + -0.010354663393207675, + -0.052420247687519295, + 0.6928993959417153, + 0.09076765064140091, + 0.5651770792230864, + 0.2859497386420431, + -0.034085629383341476, + 0.5750746453193112, + -0.08072318826339353, + 0.4784996826209138, + 0.48118468488876975, + 0.20921780183934657, + 0.28503428705995715, + -0.28416616222636054, + -0.1224423801031953, + 0.4964082441848887, + 0.6236794716190073, + 0.6849441870059112, + 0.5112418780180794, + 0.26825087999248964, + -0.5131235485427412, + -0.08712728233135703, + -0.4164136942818055, + 0.01136141998315321, + 0.4348954890563972, + 0.28655278508971804, + 0.002718027142452062, + -0.2641079554322445, + 0.08670765976319073, + -0.5840914262676046, + -0.18711670169062178, + 0.10696424058811527, + -0.6314676033423328, + 0.2885683534333996, + 0.3184687425664221, + -0.12923088220199896, + 0.050218330232481456, + 0.2895441012768327, + 0.0175776829293669, + -0.3895678765459565, + -0.5870421476354659, + 0.6962627612159527, + -0.06633009741688434, + 0.4297633657321738, + 0.38586480277991586, + -0.11915152081460156, + -0.3804141106494903, + -0.2631435009371642, + -0.02920389188545991, + 0.7113329324751265, + -0.43343020419954664, + 0.25451133870087195, + 0.5884452959277182, + -0.2674198352028108, + 0.42825664523494367, + -0.16822367924921322, + 0.07801559404321778, + -0.5224615300790034, + -0.25107677993329286, + -0.32325437268032486, + -0.1712321764120669, + 0.3922949629981278, + 0.29741704543801406, + -0.028135970147384004, + -0.056261944232383954, + 0.33938726670875674, + -0.25879481967044843, + 0.025853367514801828, + -0.5291337035142096, + -0.6932111293025227, + 0.2180612575767219, + 0.050772125820713554, + -0.11282355944063038, + -0.33395138991773926, + -0.722978520089695, + -0.5763609247478333, + -0.2757845193254082, + 0.24650874396324252, + -0.1242153690773169, + -0.49112482458274004, + -0.02349506248351585, + -0.07836921757877036, + -0.6788481261802811, + -0.4819638490462905, + 0.3893822047618316, + -0.12450171724405112, + -0.06374536437411893, + 0.11431926053694852, + -0.49163843385564676, + -0.3579373168024579, + -0.1488048030449315, + -0.5658624992579452, + -0.3013768854657577, + -0.09583562592988437, + 0.4360685332480567, + -0.28899467845653437, + 0.11005275043204132, + 0.5207360662033025, + -0.4962549978136589, + -0.1985034940936552, + -0.6858456356972067, + -0.45232799860023454, + -0.1174989105143992, + -0.2914070070734469, + -0.5902118868024246, + -0.08571716708121568, + -0.19727844922164017, + 0.37152869262746324, + 0.709705031698908, + 0.5579184088263747, + -0.540811352548963, + 0.4291164206817242, + 0.09500993058242024, + 0.413707393253808, + -0.3276233196574725, + -0.6911525798154635, + 0.6967836665098681, + 0.5921367476994273, + 0.45094065365821967, + -0.3759867076619442, + -0.6932986226718897, + -0.553628499529381, + -0.2973742920722042, + -0.42487803951462905, + 0.4476142694228318, + -0.4422434027179486, + -0.5485907200126918, + -0.4404336624029022, + 0.2168038244412449, + -0.7007264356979266, + 0.4077142594971166, + 0.3605866874718333, + -0.7071558260465095, + -0.3259687079179267, + -0.5819771806359626, + 0.5431930280238613, + -0.4832438229021716, + 0.1079892240475766, + -0.5341695698041927, + 0.07752664832567036, + -0.6176584560716178, + -0.49462212156232255, + 0.2560866347977666, + 0.3061360902073931, + 0.6481719844527409, + -0.222030093715462, + 0.015044188882887721, + -0.4351672935221238, + -0.07940005481600143, + -0.4153543830000355, + -0.6008627761524308, + -0.04256063493430051, + -0.16141649888894616, + 0.5449958176410734, + 0.4233559627441812, + -0.18307482662435692, + -0.654945844965531, + -0.6395968336664294, + -0.37135051603310093, + 0.6017605530647834, + 0.42128236060579316, + -0.5275048915864413, + 0.5236221172168245, + 0.2917571746460361, + -0.5670942327704313, + 0.4079043297549223, + 0.5762740709322478, + -0.3152217417773077, + -0.09510014227007146, + -0.6315124343925201, + -0.5762307804892264, + 0.5179759115609404, + -0.4927615446020748, + -0.38486959876927807, + 0.5597362254632718, + -0.1913881081592974, + -0.2446369505466212, + 0.7137658116560284, + -0.10126921571281666, + -0.09325291337595676, + -0.38609071148073, + 0.1283544262618136, + -0.6518684151792324, + -0.3853970417761446, + -0.6056785290606012, + 0.5514818685346816, + -0.30656908885559353, + -0.34544666944441443, + 0.6170281695093367, + -0.06556991393142819, + 0.31885645716900224, + 0.6861691782604438, + -0.3456709962842611, + 0.534061460553217, + -0.3830608853867089, + 0.2957868474837855, + 0.3200159108589513, + -0.5278741889994711, + -0.032786790430364476, + 0.5993200221467541, + 0.6409463133759519, + 0.5853320597020271, + -0.6959406015029048, + 0.05062311959402599, + -0.6719155684140347, + -0.3814172035831502, + -0.03659490056247783, + -0.06609155547823098, + -0.2771201517883568, + -0.11102525363197013, + -0.3906690180306251, + -0.3235094330159517, + -0.5041181858563141, + 0.7262834409849293, + -0.18177204299211214, + 0.05513839836671708, + 0.46119745587973004, + -0.31017228116159673, + -0.5048090203009753, + -0.2795464688476727, + -0.37617327573403203, + -0.19784110150660927, + 0.42412924528834073, + -0.23688992375240658, + 0.6524764766535962, + -0.11652862040487799, + -0.6793690633896902, + 0.5038224135864775, + -0.678981195621205, + -0.09721254234712795, + 0.10652200166784265, + -0.6940256265426842, + 0.3976929460429963, + 0.28138801074547604, + -0.20881494528723543, + 0.45365992551183165, + -0.514240336245483, + -0.1625742878114127, + -0.5726535755961268, + 0.43707499583550424, + -0.22077857387888444, + -0.026869345238716202, + 0.23099847480057223, + -0.4925333174261896, + -0.552656942282399, + 0.21603395579373275, + -0.3002986960793039, + -0.17247726876245084, + -0.33296802954002014, + 0.32178694046680745, + 0.49758436619905577, + 0.726351056463904, + -0.4217789762959508, + 0.45531482937865286, + -0.30165511338817236, + 0.3517485614193847, + -0.24995427141215865, + 0.6249535894784752, + 0.03357381917737057, + 0.623961615724502, + -0.39031490218749276, + 0.694016078566956, + 0.6292800298377916, + -0.49908143946930206, + 0.007125389967973184, + -0.3372393545469999, + -0.15219843194282479, + 0.5174551587536966, + 0.0010491129408971567, + 0.2778763489298357, + 0.37385185498276474, + -0.3221502392855777, + -0.7083690252159082, + 0.685210972695125, + 0.19921183622270533, + 0.49700567220344016, + -0.511757703331241, + -0.15278582380905759, + -0.16116741258761857, + -0.153365764596326, + -0.34621670528308224, + 0.47356278468174295, + 0.16199449584415138, + -0.6999195548606288, + -0.5226422968550618, + 0.43662464143812896, + 0.3879110748461716, + 0.4488089511613056, + -0.20092819867755563, + 0.27955979951911236, + 0.6392716571405836, + 0.48681066192812916, + 0.30430281866680975, + 0.3149140929819947, + -0.4279152470457843, + -0.6092535630625211, + 0.6818240092434409, + -0.5202220528580478, + -0.5992069510162555, + 0.12868561713050775, + 0.39266414802995064, + -0.643255815857565, + -0.3052699560813608, + -0.6272030781787268, + -0.04304272187778457, + 0.04045094505416147, + -0.1903272362344407, + -0.5368118392168194, + -0.1357215077879903, + -0.6716821577401261, + 0.32758154638008374, + -0.4126776029500265, + -0.15066658282694778, + 0.4122999606446818, + -0.13868045455120281, + -0.665941268304644, + -0.4220181021761827, + -0.09159737779839006, + 0.39706590529039354, + 0.3041772621087351, + -0.03943458389999566, + 0.18622831458313227, + 0.12149604892956778, + 0.6556062533831848, + 0.08169026154932535, + 0.2542243595976741, + 0.6947856271862973, + -0.6918995818053947, + 0.6918550982843759, + -0.2872322172385215, + -0.6230921533068694, + 0.25139079997150715, + 0.11948386816605572, + -0.1081377778442486, + -0.4603053492419115, + -0.29872745329201894, + -0.658468243618296, + -0.19930948240413782, + -0.6298971669454048, + 0.49473978431299814, + 0.388290520229162, + -0.1475796302680613, + -0.1481216310850656, + 0.6418395863685284, + -0.1132810208524142, + -0.5539665386715467, + -0.35782678487104497, + -0.647484240384889, + -0.46081260560820503, + -0.4092221521354031, + -0.09165776249076163, + -0.049447551358565156, + 0.1930863950629761, + 0.02186556727952682, + 0.664799986409891, + -0.16930388236300697, + -0.4199615432762584, + 0.6180317811007312, + 0.2212469933129354, + 0.20190389473254322, + 0.7173826671957484, + -0.5765959795462148, + -0.5129364151493974, + 0.5191776230881455, + 0.3383320836534145, + -0.558473130401715, + -0.1557713143706122, + 0.7138838605187714, + 0.08370627527939423, + 0.2515179345865868, + 0.10844945483247681, + 0.552141968224056, + -0.040698142921791636, + -0.45328568531441, + -0.33929667416667136, + -0.10728071994425903, + 0.24838880968155164, + 0.4325109785293695, + 0.3861264612670574, + 0.23534746904424908, + 0.015186413495884787, + -0.280893919869197, + 0.33785122290077263, + -0.6999842383871219, + -0.4457675002633011, + -0.4149602946305086, + -0.6304428867574764, + -0.31942731632333365, + 0.7098818699071012, + -0.032791812055385505, + -0.6609089403767593, + 0.13654935531852674, + 0.6194130403291993, + -0.33801658050357447, + 0.6622362327354236, + 0.09878231035567941, + -0.17663960452669503, + -0.0051240944338402095, + 0.41272188845207247, + 0.5126156621557443, + -0.3349751616526061, + 0.4198229247240326, + -0.1518111968062935, + 0.382533946183671, + -0.20923988466421928, + 0.2682010808580152, + -0.48980672438102535, + -0.6746326691620592, + 0.2588853970393895, + -0.23197921363179225, + -0.44635735389841374, + -0.0280550051198184, + -0.43762056658177867, + -0.7229519934680833, + 0.07652196303090475, + -0.25944225384487934, + 0.4859045009248544, + -0.08385824424298971, + 0.0143698345825779, + 0.06131477927227891, + 0.3629955907513289, + 0.6705691875406137, + -0.46013001845388857, + 0.6150413112191284, + -0.005272611943640038, + -0.607368793127193, + 0.44946662694433015, + 0.14394089288600687, + 0.42025572739320793, + -0.4323918971369253, + -0.15398245650831288, + 0.6698994474549627, + 0.43111914862899914, + -0.13469548339572113, + 0.03211984090953057, + 0.1490552473721024, + -0.17294536618276857, + -0.5765874820897829, + 0.5321452641674989, + 0.36450788239687126, + -0.4836870882518476, + -0.4055453275907872, + 0.49433431823013896, + 0.32886759825709455, + 0.602089610631805, + -0.41916594533508666, + 0.6994782929801076, + 0.4730772380202952, + -0.0968406314496354, + -0.29706117107567204, + 0.6993665668840567, + 0.07306450838220757, + -0.47787137812075187, + -0.19947744592810135, + 0.6255050387418977, + 0.6250825537471543, + -0.46896581784831937, + 0.1589820500550988, + -0.5924290472628186, + 0.10507896848298115, + -0.3839012333378843, + -0.37178937171987814, + -0.5286382983877309, + 0.06867280778456053, + 0.7086601344593628, + -0.48002831996431705, + 0.38361620502247584, + -0.6589735901138092, + 0.15293975864345155, + -0.15985872195806516, + 0.3526401451330132, + -0.008017882873872062, + -0.3295929328287862, + 0.5287415426209865, + -0.06698203968088223, + -0.49846696421732806, + 0.4222923941800589, + 0.6416139951942725, + -0.11434242030874309, + 0.4368947231956879, + -0.2454816846796618, + 0.06305675576267922, + -0.21989051844047525, + -0.5126879583278892, + -0.39652943038469746, + -0.11712254339249184, + 0.5990715073804214, + -0.6438590899792883, + 0.21441627028239185, + 0.08183722479099564, + -0.6630642937678559, + -0.19177907866765231, + 0.6804308621582067, + 0.6417072786222582, + -0.49568819141799225, + 0.6185354729711077, + -0.06931235169949002, + 0.15624658624028853, + 0.6307689357592248, + -0.5494559704059688, + -0.2106176301934587, + -0.4771870142256701, + -0.5032912121023108, + -0.26208160489137655, + 0.09313477866408659, + -0.29428116762226214, + -0.23990685999787337, + -0.06524709740793622, + -0.4601292465746178, + 0.27236773605307496, + 0.13391053715196788, + -0.0707245727470821, + 0.10533290138830975, + -0.41430500192671466, + -0.6146253633208668, + -0.07565853785077736, + 0.2873112183581268, + 0.19763908291483556, + 0.025289217606068948, + 0.5650198413315228, + -0.03177596319321907, + 0.47178475839752454, + -0.3376404735968601, + 0.1565700525179663, + 0.619363565614764, + -0.41176648767640234, + -0.5639973230652564, + 0.4077622725296488, + -0.44987823947881306, + 0.35603210909646155, + -0.47695021621245176, + -0.08920764799930925, + 0.49514145336165605, + -0.46132838158446726, + 0.6273527528799114, + 0.33933930574018123, + 0.1856935895974754, + 0.6484540891711945, + 0.5020567360206254, + -0.008600602344175812, + -0.17606033666768361, + 0.08076115847174725, + -0.6754668432677882, + -0.1965169216324818, + -0.6340389099287128, + 0.47298691033472195, + 4.8110903955778106E-4, + -0.4835605663017023, + -0.05272358313612613, + 0.5469515324214662, + -0.0634318311336246, + -0.6305802151614247, + -0.38993413396794974, + -0.5073390361072424, + 0.25868718476744856, + -0.20026069495369225, + 0.5971589844068668, + -0.016705898925582274, + 0.2176353021806381, + -0.05381937159668204, + -0.36715499033246274, + -0.13939243212930663, + 0.34592785196132514, + -0.2520749968394535, + 0.2943041179881072, + -0.29318815257459946, + 0.008299433131125467, + 0.28497619492162873, + 0.709945065924416, + -0.7050955575594801, + 0.14936036271406694, + 0.673579024411783, + -0.40253791490333796, + -0.055414774499555786, + 0.4228371397375479, + 0.09630637869562808, + -0.27354175466794306, + 0.010061522888500929, + -0.47243019110300594, + -0.5846321990649188, + -0.13811586044616386, + 0.09980596526301777, + 0.5438743390787117, + 0.682202106524642, + -0.6004405614599525, + 0.5868988130472317, + -0.5515815784809761, + 0.22794792392092444, + -0.1438663864279215, + -0.5413434964970147, + -0.056841417001691874, + 0.6189697191189145, + -0.4845515175274502, + 0.3730876239229053, + 0.21873218168740272, + -0.3037180886646952, + 0.6933304970518663, + -0.30133334507236315, + 0.43072055738942816, + 0.5351167047092076, + -0.5766436153252112, + -0.4260440834364748, + -0.5226516917708023, + -0.03258467766807749, + -0.4741318003089149, + 0.25196530851445187, + -0.3813360057932335, + -0.5100039674132659, + -0.18864397725868876, + -0.6008606974874313, + -0.18256382393724468, + -0.5115111058270595, + -0.2339901264639403, + 0.4743149819370698, + 0.46294339540876894, + 0.47338236673004586, + 0.7119655180777025, + -0.19967960773544424, + -0.07686490368459642, + -0.21445457858404127, + -0.38219894309872815, + 0.3405369394472, + 0.37205809215702, + 0.4778299137023274, + 0.119137472659953, + -0.43894807286317944, + -0.45936539963097306, + -0.714249434909103, + 0.5906075352426958, + 0.3903950379659613, + -0.5457064184296082, + -0.00846002137954227, + 0.28261010770126505, + -0.6797943866970944, + -0.37990407590713193, + 0.11665369432462747, + -0.6175787451347167, + 0.4854939389276378, + -0.5791951903167006, + -0.07732513634919702, + 0.39639874366974137, + 0.2786359612779272, + -0.13719267426602155, + -0.44481665952782135, + 0.17997061895198319, + 0.11568309051888359, + -0.16821875906122252, + -0.5641037655139813, + -0.40595724489995155, + -0.05428407467728891, + 0.14951267335785923, + 0.4091206742280682, + -0.4098364896037443, + -0.10718910774913659, + 0.6950282502627756, + 0.5966767891129932, + 0.28569033024798385, + 0.355168977167476, + 0.18892458971655413, + 0.14012381344710356, + 0.7238274775220359, + -0.392832281009215, + 0.557124710347598, + 0.15278965611960105, + 0.2563578187535741, + -0.23498396809042937, + 0.1156990252120047, + 0.39342335052882116, + 0.021032272423083254, + 0.19665976096295756, + 0.15198983339626604, + -0.18081910746324614, + -0.4924861638470828, + -0.389558392811154, + 0.5213289667013505, + -0.48707723143254694, + -0.3661970042110816, + 0.47576759516589906, + -0.4807347854413801, + 0.6871321130433006, + 0.15282344550397708, + -0.5761949473529971, + 0.5734226679664656, + 0.4347011427495744, + 0.09470882456429441, + -0.22355444237507882, + -0.42084247239184597, + 0.06094923653660933, + -0.14920746328095302, + -0.674056445728278, + 0.002808472031340714, + -0.4086373584360739, + 0.12135094064162577, + -0.6262519707156099, + 0.22830091477387626, + -0.2924775625502956, + -0.6800044902367288, + -0.20173558685455317, + 0.37338727229700663, + 0.6746279988653487, + 0.1994952369038896, + 0.05313535496654298, + -0.07974248864378697, + -0.6423362615344326, + 0.2001015936062852, + -0.00628578443717287, + 0.1778728398749504, + 0.5656657461259051, + 0.5334443171324055, + -0.22312987658895644, + -0.07320808612111107, + -0.2563802765767556, + -0.25399284760400914, + 0.26378065068225953, + 0.31142941842929983, + -0.7169810482672261, + -0.2629702243980847, + -0.7195746223334649, + -0.3289538301981074, + 0.5200810026096414, + 0.7197435501426399, + 0.21913257063653058, + 0.10295495517577613, + -0.27856238453753934, + -0.6188272457942313, + -0.31978386415469695, + -0.29163505979176235, + 0.05015560438986055, + 0.6867359253477214, + 0.143422104011668, + 0.4123112473582524, + -0.4998152645988235, + -0.3941865651385245, + -0.7168319627294719, + -0.4896465361196556, + -0.5617221626910779, + 0.03837822591457074, + -0.716151635768681, + 0.41169945398327434, + 0.06400394142522636, + 0.26357067151152214, + -0.7285771293270537, + 0.3884224063269568, + 0.21706126520072822, + 0.5575191737114897, + -0.0728225667043434, + 0.6866933818670493, + -0.4736837092463271, + 0.18037335056171877, + -0.19074847195968725, + 0.41229238680875335, + -0.1369124228331301, + 0.34951940867406295, + -0.1678185496345468, + 0.48934587769353444, + 0.24774403400955802, + -0.6284794330543311, + 0.7210100619284117, + -0.2483034613044633, + 0.4066078562121396, + -0.5539666816643912, + 0.016512822115595904, + -0.6863835942959364, + 0.3981962227647615, + -0.30991227020156253, + -0.17769210577826744, + 0.5534195886670839, + -0.013156863314255918, + -0.1369895125067142, + -0.00339857859563919, + 0.6554052730555195, + 0.1771117114917482, + 0.696775228607668, + -0.2752160026631653, + 0.15276529805679373, + 0.5973817333867473, + 0.5137145615586078, + -0.28217520888896763, + -0.6813955571074511, + 0.07018149727740974, + 0.4776951710802275, + -0.48487261682509053, + -0.3903679290790426, + 0.30572290037641836, + -0.30133373022227966, + 0.04891609548907683, + -0.5637224782659683, + 0.03200189635305606, + 0.36712416827782257, + -0.13295298206509787, + -0.3595436055542189, + 0.2661220818741943, + -0.5647109238676316, + -0.6618122767115504, + 0.10227024223688141, + -0.19188547982265514, + 0.5194851749749585, + -0.2867444128731743, + 0.5746771267839756, + -0.4332947673861449, + -0.1124124754664213, + -0.3818761103237956, + 0.48845095978519004, + -0.4735971003830455, + 0.4814002877274557, + 6.256932411291549E-4, + -0.6929190708302724, + -0.0614682408694861, + 0.4031777061210149, + 0.7089560424862054, + 0.3833471381798854, + -0.023189715986299153, + -0.28190917997253256, + -0.022354136266075075, + -0.47364018931993473, + 0.5185811150559818, + 0.5005992086365336, + -0.04183158834117706, + -0.5405842584974478, + -0.29875345179412716, + 0.4936377905382372, + 0.4170696172622965, + 0.004226178718428342, + -0.230873655122875, + 0.15342668637800005, + -0.4787458663044657, + 0.2642862886060132, + -0.4331717555779272, + 0.0069747555673678185, + -0.4935747657478328, + -0.16501322170929378, + 0.10938978046225156, + 0.554240332824562, + -0.27444292357612005, + -0.4432473204521233, + -0.33249518333858147, + -0.7284573070844362, + -0.4170029969771956, + 0.2653742917129809, + 0.24079364612951182, + -0.13248979223490254, + -0.41561171070841624, + -0.5272983136103785, + -0.6165843969967332, + 0.6739193606418368, + 0.35579375220720433, + -0.34627030282550364, + -0.09666562360672148, + -0.2998260270735095, + 0.30168776344546533, + 0.38550804308231545, + 0.6991082103509565, + 0.45592526436945, + 0.45168047520192367, + 0.6801015100854544, + 0.02539163635968833, + -0.5243649101570356, + -0.25908309660205364, + -0.06566516891750762, + -0.32496167128488423, + 0.587521606550758, + -0.3736153649611483, + 0.29461667657847146, + -0.6769910589658078, + -0.05683833975453345, + -0.18757874673823283, + 0.721061131087209, + -0.09139573077927587, + -0.6998780322807956, + -0.5604232108048091, + -0.5303825802590102, + -0.08975535742454954, + -0.2658503919195324, + 0.5376311128672671, + -0.03462899710927503, + -0.374348542571425, + 0.22295540816226367, + 0.46603307129474003, + 0.5642303315328954, + 0.5364363642348811, + -0.3618491821342585, + 0.23595867803517878, + 0.5655410499183837, + -0.47323741643983214, + 0.7219445336024319, + 0.5181683696163468, + -0.22638823474278846, + -0.6337551708206376, + 0.6261466146797645, + 0.27507646180930423, + -0.2369237815814652, + 0.4040389973696734, + -0.6051684815063922, + -0.462305929913643, + 0.4969438541603435, + 0.2978147186900073, + -0.16487539309073795, + -0.6159457051877145, + -0.061478691115474104, + -0.5078378676697227, + -0.6009527267366499, + -0.6171044898013096, + 0.6220494019419567, + 0.21859243261263517, + 0.6363907106311728, + -0.6639177846216807, + -0.20110776680732778, + 0.3530899665292082, + -0.16481589386581952, + 0.448862235660787, + 0.12687085179727953, + -0.47030123222915093, + -0.606811494440418, + 0.4880663841229691, + 0.3444826898774811, + 0.25612609159119504, + 0.12376118117461554, + -0.7283531701810323, + -0.6656135215813632, + -0.4683393105238971, + -0.0240840885818433, + -0.2174994653224006, + -0.24597802939659957, + -0.3475568840082577, + -0.09061769871082004, + 0.17408247710726166, + 0.5306912051208896, + -0.47232171206752005, + 0.23016547463861203, + 0.4540943045744159, + 0.1721745899224808, + -0.4752528124849629, + -0.26265250182909644, + -0.4959618200007502, + 0.07946228515489218, + -0.41245708059130776, + -0.570815747215539, + 0.13931214732505626, + 0.2694494522704284, + 0.6714601915584635, + 0.38337165494374537, + 0.6485765851229932, + 0.5201297980298489, + 0.5277962037261796, + 0.6575878235525945, + -0.6699091830330873, + -0.05005107803579223, + 0.1943964754000418, + -0.2956949145157592, + 0.14758003535568565, + -0.09133313794879527, + 0.5202486810521065, + 0.49846882787001867, + -0.7091066103604404, + -0.20904515197568196, + -0.048190594430077005, + -0.07634998552036043, + 0.3706975550462379, + -0.0050505608557444015, + -0.6652811166414923, + 0.6663009685130779, + -0.41886825826114443, + 0.5937784630343095, + -0.3884629107119005, + -0.19050305294236858, + 0.5060172178606746, + -0.10478466732247449, + -0.5796325228374151, + -0.5574579132906611, + 0.3920395900852429, + 0.49154909795676827, + -0.623876670330565, + 0.6785736441187022, + -0.44255426538515785, + 0.6713007277927796, + -0.37405162401123954, + -0.4202422896277571, + -0.25548887708769624, + 0.19735611997218228, + 0.17156062521133797, + 0.01536652218187673, + -0.5385011489414402, + 0.5908445559818742, + -0.3594711444190709, + 0.4329379554722921, + -0.176234103498916, + 0.267522094599827, + 0.20784303393598258, + 0.02849620211789805, + -0.26578873813288634, + -0.6297517976877867, + -0.03262025967705695, + -0.07212853103654737, + 0.6306076049124854, + -0.5087843942613304, + 0.20182614593110282, + 0.5673911971719054, + -0.028515894393830066, + 0.05946423987502614, + -0.4654554805386191, + 0.6439595172228039, + -0.3037758385798615, + 0.7272691634878516, + -0.40768075667985965, + 0.699744094129624, + -0.02916242615178688, + -0.5613040323738434, + -0.7275345642070121, + 0.5989993372583151, + -0.3704493676478128, + -0.21660861538352627, + -0.21775588389748823, + -0.05428118190020448, + 0.6411472528381625, + 0.10016908581383743, + -0.3824209773785032, + 0.24681683756316308, + -0.21496668965100563, + 0.4688647770504113, + 0.5478268823479766, + 0.35386860949726073, + -0.3887596097456987, + 0.4938432857128221, + -0.044552494601106774, + -0.534603101492747, + -0.4227106547976334, + -0.3282713082208058, + -0.2706660050050272, + -0.47173463384014097, + 0.40156013075853747, + -0.46437524820623244, + -0.6703061323691042, + -0.12131513393647353, + -0.7131441812540773, + 0.3373496574573638, + 0.2230642877392055, + -0.14165315985810345, + -0.5040359134741286, + -0.34678853399620213, + 0.2308194936454353, + 0.29258640262964253, + -0.6782696811808008, + 0.6839502183731134, + 0.2536237560187976, + -0.6292286181225134, + -0.09899648266899352, + 0.6608023193194146, + -0.3286630597945646, + 0.4386019092081128, + 0.1717804311654798, + 0.3149344524377653, + 0.24653704820175537, + 0.6884529546583411, + -0.14544242222612724, + 0.6304016321374957, + -0.6585496128623437, + -0.2049791171010622, + -0.584866102168527, + -0.4066480749935582, + -0.6121855379266247, + 0.4130361531112843, + -0.5291663181908559, + -0.4128211818226024, + 0.19435312374089175, + 0.22948347651951118, + 0.1430470226003122, + 0.5493397021966635, + 0.014585704978946401, + -0.20280285532676223, + -0.18718763406338101, + -0.27483763297862857, + -0.19515431267493533, + 0.581835219542306, + -0.4491433208922495, + -0.07228414370228853, + -0.004943671468050748, + 0.13977698685895723, + 0.3842693509721058, + -0.6656905783167394, + -0.29926906589694746, + 0.006680681203364958, + -0.324524110611646, + 0.3959372510743415, + -0.6206508972446293, + -0.14069280436729403, + -0.7188882616642369, + -0.40221515243546935, + -0.2849637964644157, + 0.0176203474541774, + 0.3360281685421307, + 0.4088303021929609, + -0.6557839594547094, + 0.522336762920941, + 0.3867642068643591, + -0.2333092728762683, + 0.14652100244203126, + 0.055482781541315584, + 0.6051844964946715, + -0.3095075754987584, + 0.19001609625850735, + 0.6642694336082837, + -0.3140435337211299, + -0.11051650923292666, + 0.1126853323286372, + -0.6761401496315065, + 0.4084269768660391, + 0.3927955120235329, + 0.6983268113606669, + -0.18706692469010422, + 0.6898325674832841, + 0.07705727790607297, + 0.26644641389737633, + 0.2075831393652129, + 0.29358324575489725, + 0.24823126128512096, + 0.5277898928041163, + -0.4452820831314486, + 0.0802196626258429, + 0.6135658616327064, + -0.19136588017822243, + -0.09075742744695214, + 0.6002154299176323, + -0.39586756269144535, + -0.3560686917276069, + 0.7093178031104717, + 0.7171801187237228, + 0.20015906071425948, + -0.058804063782038174, + -0.007388858553300293, + 0.21427384866501376, + 0.23000220703019114, + 0.0789918734262205, + -0.2709774204247314, + -0.46373099072793555, + 0.5763226009077826, + -0.17412236115241664, + -0.21564606507635198, + 0.6920914827464779, + 0.5541914031802457, + -0.01380429703089836, + -0.6320005412868661, + -0.672974379404826, + -0.6595568002746898, + 0.341311347890928, + 0.05478901270956571, + 0.036548704553281075, + 0.5089723830864776, + -0.6243241605054604, + 0.0451583387589104, + 0.32199672901026943, + 0.2500701167847258, + -0.28622594489113745, + -0.11646056925180148, + -0.2022284882091252, + 0.308401884682761, + 0.5058970486466896, + -0.5362674131947172, + 0.5737808629882704, + -0.45790995125981493, + -0.29681562998406774, + -0.055594181098540196, + 0.6275962589083413, + 0.5234133461524231, + -0.2747175493871208, + 0.49329095910121334, + 0.10421940401400365, + -0.3361547928586422, + 0.33330553872037094, + -0.3799125979851467, + 0.4665024669802369, + 0.5751519133298124, + 0.2406215802535715, + -0.18864528255103308, + 0.22532371266550633, + 0.45626700981420965, + -0.27095361902850956, + -0.4797576585333737, + -0.5784137839661432, + 0.32046889012606705, + 0.1269624363098648, + -0.2882403663817569, + 0.5668347202946433, + -0.18326588481153383, + 0.41908249739304515, + -0.5299923647410996, + 0.29307421391246624, + 0.32198482844404874, + 0.3433671857935654, + 0.023463716223066644, + -0.48836498098219494, + -0.30365831436731716, + -0.42814198684298876, + -0.09551354034111659, + -0.3018986019350952, + -0.14799653619758713, + -0.14298881414257325, + 0.12283125579395282, + -0.3872670670536338, + 0.17999512007759522, + -0.11109203740177931, + 0.4400528018863281, + -0.33445853403470377, + 0.22025457521853864, + 0.30702398665993647, + -0.22109953507222058, + -0.12512101001063936, + -0.3978000964779072, + 0.46771067234390573, + 0.0938777418913217, + 0.013114429632272606, + -0.29818557188053024, + -0.696720775783383, + 0.20016041117316397, + -0.6044746311652417, + -0.1496726402129347, + 0.6159878813553523, + -0.6355713283815715, + 0.6346556722636787, + 0.17787006483327272, + 0.7086700044987755, + 0.3324078943334363, + -0.6907334883761825, + -0.1696729405458106, + 0.17046691303858852, + 0.44757219811828475, + -0.6560999319774371, + -0.41994053584639884, + 0.6796751379920947, + 0.12618153865402337, + -0.40538465650411826, + 0.5040546478063963, + -0.49643833397859793, + 0.1134616494448587, + 0.5048429521987492, + 0.5254833844388043, + -0.6573143127618946, + 0.22450435411515923, + -0.10398387379297747, + -0.18515325292789453, + -0.5170355289015118, + -0.30292324863660736, + -0.6885935064717469, + 0.3752080101878015, + 0.7142914738250492, + 0.6258868812960292, + -0.40527257299874464, + 0.17783771364263712, + 0.6754338700122917, + -0.3397642086189893, + 0.19287350476873255, + 0.5576287792478747, + 0.44385745209438077, + 0.47984756366086523, + -0.06381882009334883, + -0.6208275912919219, + -0.6055105540841724, + 0.30198337674655407, + -0.3233799757625262, + -0.6781871339940968, + 0.3081099975232642, + -0.6664185056996441, + -0.691647972879972, + 0.29386147798470263, + -0.22826244554846253, + -0.7162578979356852, + -0.30987943188125494, + -0.4712605306967174, + -0.4255506731917876, + 0.3527956850806484, + -0.6553302643137049, + 0.6198451852494051, + 0.11916149871834025, + -0.017621515135773702, + 0.1382886932386055, + -0.04245652273570377, + 0.056410996679062686, + -0.5336412871803964, + 0.5255042787295865, + 0.6308790866608487, + -0.29458047777853535, + 0.16698565434269474, + -0.1444816718286117, + -0.2456244372120377, + -0.12809451993280163, + 0.287080981966523, + -0.07395530974561615, + -0.36641116130621604, + 0.3078431026224455, + -0.24842130870254353, + -0.24901628411291643, + 0.16169292737689844, + 0.4234938313287957, + -0.5512746488334785, + -0.10527095967319822, + 0.17232302817697787, + 0.42257691586605706, + -0.14470165454393036, + 0.3295423605974972, + 0.3291155605112652, + -0.39400008988624297, + 0.1727178210984207, + -0.12396659215886507, + 0.3240940839465172, + 0.20043795863482305, + -0.05489768135512496, + 0.36870788095799534, + 0.3018773218199142, + 0.0908038766616327, + 0.6704067274420891, + -0.06979260651000219, + -0.46462371359618565, + 0.13807403479051394, + -0.5176955218782829, + -0.20305448308396135, + -0.46811411197101366, + 0.6982616925037861, + 0.6747624235203682, + -0.42458270912314183, + -0.5273990026962999, + -0.11492325381790969, + -0.03086245828770262, + -0.4845190833538233, + -0.13243069878607672, + -0.6860563386574505, + 0.5974248210125632, + -0.37264257703845355, + -0.23671848053654143, + -0.48346729509498876, + 0.6489032772960124, + -0.2804096230392192, + 0.024262871029339328, + -0.5829104565195018, + -0.6303903967172787, + 0.2364621458977635, + -0.507973043863362, + -0.5667827073474279, + -0.30686031185740037, + 0.6072675528335834, + -0.5453147613272009, + -0.3663694623517208, + 0.7227203837407616, + -0.5185868021716269, + 0.508611864343931, + 0.42567377600894596, + 0.19583920091293294, + 0.4344447729623786, + 0.1005118754476736, + -0.41016175346580797, + -0.20466126472293822, + -0.5193087000168011, + 0.6607763302317682, + -0.04038163124340788, + -0.5262848689802506, + 0.05338262380348058, + 0.7141601020758106, + 0.45678225336795375, + 0.5461107850750435, + 0.31679512072739735, + -0.43266772032789536, + 0.6401259456932444, + 0.040158316159432994, + 0.542732780340786, + 0.7229051411025571, + -0.2349164191591771, + -0.21051524111330233, + -0.3602073783467451, + 0.49305289152391607, + 0.4125232805918415, + 0.5398515547361857, + 0.044710758617058755, + -0.1270270486331816, + -0.45476027515368506, + 0.2942590859085048, + 0.14899763830039114, + -0.33039258591843984, + -0.6244642122637316, + -0.13579003545020618, + 0.4791555188217438, + -0.665328443152638, + -0.2074687522481412, + 0.3674430364171839, + 0.6356602403003901, + 0.3479888204788135, + -0.5674828539433193, + -0.2277811408468604, + -0.13073782302913872, + 0.341016727709484, + -0.5885881443712238, + -0.6331698396746788, + -0.6257283569902625, + 0.5592061147463783, + -0.28751516452250814, + -0.15692447918457075, + 0.5390884428451439, + -0.7033125499376849, + -0.2520007913474737, + -0.35338693754685674, + 0.5373572404944644, + 0.25665966974950716, + -0.06834149165651027, + -0.5431135605815187, + 0.5514698421773405, + -0.3255061548684845, + -0.014776279935761694, + 0.12691981998657642, + 0.4415032812547841, + -0.390684356449274, + -0.17286478517751058, + -0.18796207056325265, + 0.09347197335693735, + -0.4392700492040172, + -0.23070391500259502, + 0.4754769858324428, + 0.5430000289995174, + -0.5032849125766448, + -0.3863846696945054, + -0.3042261336057074, + -0.4750560482391389, + -0.09489552844771554, + -0.6326648767247589, + -0.16781499395044908, + 0.20298690414581222, + 0.47812006638405413, + -0.4787723078792359, + 0.6608502848541478, + 0.5079244664633553, + -0.708410414758126, + 0.45007553252414634, + 0.2553858543169769, + -0.4018317053883751, + 0.02480283113327042, + 0.326611607918734, + -0.47739622813229565, + 0.4469006979563086, + 0.5407455311568783, + 0.25721011985952325, + 0.193405337714754, + 0.6766888052350692, + 0.46067188176458274, + -0.2963088522532355, + 0.09220659947260246, + -0.5912648067995938, + 0.31055285296193924, + 0.6742183525761105, + 0.5921670142582489, + 0.5204423062706338, + -0.037414180527190255, + -0.03216817450774356, + -0.5635026002400385, + -0.09572303170769614, + -0.5942147403418052, + 0.7230055002771831, + 0.2321286360827789, + -0.3879957129043579, + 0.5768489449540188, + -0.6969283076454749, + -0.2634329612701424, + 0.2995451211924578, + -0.18771511465033008, + -0.4643444136413256, + 0.6654985734302132, + 0.34173461600214416, + -0.19135518257383777, + 0.14187930619114664, + 0.3700740147234538, + -0.6479008820396088, + 0.08140390180248602, + 0.6599671561311218, + -0.16149621570423167, + -0.07481718750442212, + -0.009264892331415586, + -0.7197803519925514, + 0.570442203162105, + 0.6199566122808644, + -0.006253487801033186, + -0.17419188698944132, + 0.6578189025154755, + -0.5101901236354225, + 0.11974307688695518, + 0.3754951994498763, + 0.31233303309083316, + 0.1050298891283723, + 0.443237347398463, + 0.43478919064342847, + 0.6870670223730022, + 0.15331348581404325, + 0.6252792094586928, + 0.5968230992334278, + -0.3188822457040218, + -0.16722379641045837, + -0.21425239323579504, + -0.12152542145034373, + -0.0993637540580381, + -0.281851933948659, + -0.08466492934090886, + -0.6865319849314891, + 0.4893756763301327, + 0.6892048150701995, + -0.33836910004365056, + 0.701674914808819, + -0.005298655460294732, + 0.3726776593668826, + 0.26455220492250475, + 0.14090321638184755, + -0.12315403745436682, + 0.6797292715549603, + 0.12573436999805077, + -0.32228520830849106, + -0.7085426068550221, + -0.41420994206479794, + 0.3800074830746605, + 0.4528009394136616, + -4.163733166161476E-4, + -0.659487193092766, + 0.18017037947786796, + 0.4845987296418852, + -0.020272134319514468, + 0.1117765304037841, + 0.6144786659978292, + -0.5457924882988697, + -0.20623650306507002, + -0.7183441514300682, + -0.38764927269873234, + 0.07389894396316699, + 0.3396967155838577, + 0.20620735056874362, + -0.6073429569727071, + 0.008739300740248979, + 0.16951983776529223, + -0.36107578692810943, + -0.6951030869224541, + 0.517938113090104, + 0.17872006639912752, + 0.39433784346270406, + -0.68288016905383, + -0.45939956940137755, + 0.6592852301729906, + -0.024937785540627866, + -0.5973571688672941, + 0.31595053639712645, + 0.33601614629170595, + -0.19584924573063456, + -0.18733398589262273, + 0.35069954988250607, + -0.38851793539188817, + -0.2038263930713593, + -0.12916508917911917, + -0.23635201767878683, + 0.07295391735188095, + -0.6980933034311805, + -0.5658191605889741, + 0.3682680027956342, + 0.5233138683573271, + 0.0901056227421817, + -0.6348063743688643, + 0.20747227456280037, + 0.3571553943602368, + 0.25909901142846414, + -0.550616479863211, + -0.26987996715678286, + 0.15885431315252263, + -0.3074159599541724, + -0.44166635063244764, + -0.016717011166058837, + -0.638839877334879, + 0.05803067667234674, + -0.11747191741695584, + -0.4332492229385963, + 0.35331708989106936, + -0.07300714644363615, + -0.07003130153209047, + -0.08973641860772885, + -0.7283329508715325, + -0.6158947780583485, + -0.6427041210224657, + -0.2561977351859823, + 0.6569190979886277, + 0.5330130494386216, + 0.5189306899566111, + -0.38545739682338104, + -0.13499295682657864, + 0.5259158438360916, + 0.02523005334422901, + 0.14933603513673088, + 0.6297546413904938, + 0.16888442963877548, + -0.24049485592842396, + -0.344388541280789, + 0.06611314772766008, + 0.5440343059107653, + -0.45454227004903786, + 0.45384910325692207, + -0.5187465961534733, + -0.4918208746752021, + -0.22518712136624064, + 0.06456894298108018, + 0.2640781578947293, + 0.4755498029488405, + -0.31403542825530734, + 0.29599257295116854, + 0.23851528102857733, + -0.2653315227874921, + -0.07276951288873612, + -0.03396630333352069, + 0.1800709781179981, + 0.35156352745432917, + -0.4089055913562124, + 0.7075472722005358, + -0.4132429271353329, + -0.4577495190326355, + 0.6429098228230192, + 0.7080609582517297, + -0.49274862372564804, + -0.7210268396839304, + 0.301640545713699, + 0.33544348337334373, + -0.29360574399418127, + 0.4348030538872898, + 0.152193814731032, + 0.05628727389903776, + 0.23211357188559434, + -0.5224906263148574, + 0.320548574475656, + 0.6123062071305403, + -0.4690303453931071, + 0.04604268776122966, + 0.1365834627988315, + -0.2233628687010214, + -0.465248067606381, + 0.6909221865126012, + -0.577293584418457, + -0.42450929291498707, + 0.32678513606244897, + 0.6154026492971085, + -0.3462565122978351, + 0.481699874103672, + 0.4990907456374869, + 0.02269060870428774, + -0.6932813459122183, + 0.42840199359542375, + -0.34046321139607105, + -0.3066401200480669, + 0.6767762810220599, + 0.6155716979619319, + -0.011715741727117979, + -0.25175888329889373, + -0.7192879673077227, + -0.6591119860300365, + 0.44492300168789534, + -0.24711301281408654, + 0.2979731242276926, + 0.07431766376419868, + 0.22698418184550695, + -0.3434349899529182, + -0.43754405781206324, + -0.25659676432034517, + -0.4176831074390508, + -0.35381976178529134, + 0.5860477683165934, + -0.4949060260036433, + -0.6915413348075695, + 0.6354272862616017, + 0.32844916697431814, + 0.4280448532416756, + -0.5810083759590312, + -0.5595942671699904, + -0.16759831330764674, + 0.26167962763639663, + -0.6197842051312596, + -0.021758370227999757, + -0.2795708836618334, + -0.022156334097253816, + -0.5759126476467725, + 0.13810832578535004, + 0.20886397550387503, + 0.03611423504877043, + -0.16174495161614033, + 0.38040216790085557, + 0.2844053559732247, + -0.023117573004785674, + -0.5593677048953767, + 0.49520648811605117, + 0.3518093873870609, + -0.30365753010044955, + 0.101504011104667, + 0.37210086122136343, + 0.11242775516434955, + -0.24414063063291153, + -0.5535074331010603, + 0.5619658523346165, + 0.38618221451690893, + 0.6752745972769172, + 0.6616350751357438, + -0.10568619740402208, + -0.5725785452742094, + -0.5974408357531379, + 0.39531988907185545, + -0.05046592878778089, + -0.2016692037798009, + -0.2085099829106396, + -0.05086120094147939, + -0.38519997092787783, + 0.5824785069896461, + 0.7092631664385458, + -0.030458553422198165, + -0.32947037393517425, + -0.2318303373236294, + -0.5540034777845041, + 0.4379743673723955, + 0.4363810393065777, + -0.166947396641833, + 0.17139356799121086, + 0.317866199151265, + 0.3976370562549545, + -0.1976541303737136, + -0.16759478132616878, + -0.6549204707150411, + -0.553627538415201, + 0.20651819243711522, + 0.30772473845248105, + -0.42111329712352397, + -0.08809651648637229, + 0.7036307090499987, + 0.4561975015297097, + 0.6058969935960976, + 0.005420001795305995, + -0.698281947811213, + 0.08706789123211067, + -0.6396882487121266, + -0.5420941472638808, + -0.1478630710907336, + 0.6935696348858222, + 0.17512951282725164, + -0.40520424074030076, + 0.7113660851525421, + 0.11590663369086518, + -0.3010105653477196, + 0.1955839504015623, + -0.05619567332928643, + -0.33541957422901064, + -0.5634274694010432, + 0.16350668048632266, + -0.22762697933391274, + -0.5659010294346007, + -0.09382720721599236, + 0.7157887007505694, + -0.6506234540963822, + -0.46531685096366465, + 0.014258244453500213, + 0.09721307700299964, + -0.20355321191417697, + 0.43084787190568763, + 0.1133832856964827, + 0.038123298272715433, + 0.11033478939155261, + 0.330239640170644, + 0.2008415647176438, + -0.541729458351025, + -0.5443647693577525, + -0.33608575885432385, + 0.43789907126004035, + 0.7138413171593396, + 0.21126138211425294, + 0.42774285919558874, + 0.09426730854140075, + 0.19634154876155763, + 0.4485828861410992, + 0.6392628399909146, + 0.42980677365744624, + 0.5844784209050848, + -0.004366105109385843, + -0.08724143003120532, + 0.5584957504304597, + 0.31331762039848043, + -0.2568349310671943, + -0.5700931387606836, + -0.17615516183235247, + -0.29605196099932385, + -0.21781590410407825, + 0.44208122703577635, + 0.4194920858400242, + 0.6350795689111075, + -0.4608539146821501, + -0.7231126418682953, + -0.3559824595409686, + -0.421063487760399, + 0.2703318137559424, + -0.6644315662440757, + -0.06975935126173216, + -0.14127613402220052, + -0.4192702708136351, + -0.260692701330817, + 0.012725118919802547, + 0.6523071747126215, + -0.6765732915535889, + 0.1464757979190613, + -0.09601189652980946, + -0.06440692771079248, + -0.5234790797099403, + -0.33968329535806313, + -0.6960810841535411, + 0.08449195435987678, + -0.11384807733566549, + 0.6122904634641921, + -0.23909114393435, + -0.20719230679933343, + -0.5830403613762875, + -0.17705290878684843, + -0.1314796751754026, + -0.7193837411995238, + -0.5742180564855137, + 0.6049609866100176, + -0.3923012312733116, + 0.20171884995123235, + 0.5787648014963087, + -0.2777248691922575, + 0.4999964274499462, + -0.6968110796341327, + 0.6386154419653993, + 0.2495145933355566, + 0.19552383258056327, + 0.515659990448734, + 0.507226378219622, + 0.6485651379422623, + 0.03938765537748423, + -0.570068817288539, + -0.4281913275382835, + -0.5403249008469071, + 0.3401166165195808, + 0.2685275486572626, + 0.08680818430547443, + 0.3329386489120105, + 0.5654921947026561, + -0.5426782859333993, + 0.4268307765763266, + -0.007899758726876649, + 0.34347984129627096, + -0.709276482262019, + 0.5020764864051763, + -0.5518432674058151, + -0.7206753277629444, + 0.33446383491753684, + 0.5242362390238826, + -0.5424679962883125, + -0.18595383712411628, + 0.26054849727801166, + -0.24569356561300043, + -0.31320393488659326, + -0.3656825991736216, + 0.5719831484364777, + 0.49087394190083744, + -0.5231916190094621, + -0.6998346047540807, + 0.016182437887274026, + 0.6153785114457782, + -0.48741259263621717, + -0.233961453572667, + -0.6591606509719015, + 0.5775240116312463, + 0.5680234976764331, + -0.15035708860673658, + 0.2711663212810722, + -0.014604698019482942, + 0.4092138422066762, + 0.23438295684619115, + 0.07097590813895538, + -0.703709425296641, + -0.47552323366673754, + 0.29265638669825855, + 0.689064325951003, + 0.3823003554229829, + 0.19775023706145278, + -0.07987259190656082, + 0.4348252630039109, + 0.47671613749603003, + -0.15286924710905048, + -0.14932762712672043, + 0.04418044746009897, + 0.5674069063128528, + -0.19144679546387755, + -0.2723665750658232, + 0.6307026101574185, + -0.12009200418412713, + -0.38259502092078157, + -0.15377695624394683, + 0.40979759886620926, + -0.4544975899579134, + 0.620873620061893, + -0.6587610418569798, + 0.3940008954803138, + -0.20438689509651864, + 0.6784150946009968, + 0.615767467606291, + 0.0986839395506075, + -0.4388933469153374, + -0.6735723578307138, + -0.6833462470099336, + 0.05179838860243613, + -0.519864981237725, + -0.4115521576129838, + -0.1817509105693591, + -0.09763320918778984, + 0.5626726300824824, + 0.2246199294714616, + -0.47903423855661054, + -0.05421039704979791, + -0.758802422011968, + 0.2934767966752979, + -0.4357597011091418, + 0.5853222200881986, + 0.589439061949021, + -0.042228967485763436, + 0.09346394038109895, + 0.20121631466144663, + 0.5530021725445088, + -0.7820022614195979, + 0.3655565965018329, + -0.14496085244818757, + -0.7622606546982912, + -0.7103200315174754, + 0.3540193137664386, + -0.7029720191342886, + -0.4112024914289654, + -0.5767348799765781, + 0.45873213459429374, + -0.20382995356659428, + 0.0272120028180588, + 0.5112174833195492, + 0.47353136427253884, + 0.5945984950911599, + 0.1780240532173607, + 0.2631261642525452, + -0.07488013157195361, + 0.24932450935781436, + -0.25123070923166113, + 0.08248535527572431, + -0.27789452435253537, + 0.6361695279108436, + -0.6606189995897418, + 0.5699959390888721, + -0.2677888278169086, + -0.1668268649061876, + -0.5178164219428929, + -0.6062857174111406, + 0.12176296906692763, + 0.04390020343226919, + -0.5427330503380488, + -0.7353684962651468, + 0.09747829538369235, + 0.3553206600105069, + 0.39806661018537925, + 0.5122276286631048, + 0.40005944854806563, + -0.28142461901360516, + 0.18291115938655056, + -0.6959078895484415, + -0.269199418941537, + 0.29506476242508384, + -0.07207157600976444, + -0.3267711054201179, + -0.4000167835095919, + -0.10623602361191387, + -0.4887248583878462, + -0.21611056924166894, + 0.23050078230024018, + 0.3256318986497292, + -0.3556342698373696, + -0.24200224645623925, + -0.006250788221316972, + 0.038038505452386295, + 0.23155747989772635, + 0.3886059530585372, + 0.646549137588304, + 0.6560223239737227, + 0.10276512336765731, + -0.7136274202125182, + -0.3234443210889592, + 0.03202756986024047, + -0.284028669404902, + -0.6517398293919975, + 0.3497278889551888, + 0.38382517019774387, + -0.4090925929400717, + -0.21982061995993818, + 0.4759862231923685, + 0.06864127360052552, + -0.5620574706544962, + 0.027558000153159457, + -0.46876599764541504, + -0.5233725985131557, + 0.5426859741889621, + 0.20631796184527518, + 0.6491324106942739, + 0.2839208633885354, + 0.00563292392179815, + 0.5119882191244202, + -0.6396022966601674, + -0.27903237173162476, + -0.40782673527208474, + 0.46140314920196757, + 0.06740996554956358, + -0.2952841577979024, + 0.5680219599179802, + -0.5027692114587725, + -0.09684080123655248, + -0.4109840219091477, + -0.13958319503330385, + -0.38358259435054415, + -0.8028154831648873, + -0.4043117223946343, + -0.47230916625058783, + 0.058969456010117494, + 0.16445086630346906, + -0.1372738890583144, + -0.25031572521906786, + 0.41157313083718117, + -0.543175640257124, + 0.32608115526284276, + -0.5243177229890496, + -0.15130164387658485, + -0.04337360450323813, + 0.4642215553685306, + 0.6214143393574326, + 0.22788156717626362, + -0.5237312599076441, + -0.03718312722781936, + 0.2910991142106819, + 0.5213545867278341, + 0.1390186541309275, + 0.30007264960726465, + 0.05990354111425911, + 0.6326763543071606, + -0.6309794373264324, + -0.21371636002547034, + 0.35540718380566194, + -0.6554809054430891, + 0.2793178634046011, + 0.6194851513961802, + 0.10764424687252827, + -0.732127195520468, + 0.0524926572765787, + -0.04485637394260156, + -0.3656203586204217, + -0.3089515810547171, + 0.30011880118923184, + 0.008056857938439244, + -0.6894995501368425, + 0.4924576821081138, + -0.41002764168001105, + 0.27279352424053294, + 0.18345828217113536, + -0.3519064884916687, + -0.2988418120612286, + -0.7785573722597254, + -0.7515416748628421, + 0.37928407668944863, + -0.404477973344274, + -0.3867358741642036, + -0.49653643128464364, + -0.15159046876044946, + -0.15836988109594563, + 0.4298545943851765, + 0.520149649208497, + 0.3968952348190725, + -0.3260117534178106, + 0.06910586503739591, + 0.23106630287215413, + 0.43147805279818174, + -0.3879237573843486, + -0.6133348110607749, + -0.5892142175814905, + 0.010712257710879136, + -0.17819939445215394, + 0.15648691805157178, + 0.03714299644415964, + 0.5363434295231705, + 0.16280228955980103, + -0.7194710451722938, + -0.4781290931206146, + 0.484242805249642, + 0.4712097901304423, + -0.24364765437627367, + 0.11166472459671506, + -0.06719353234813363, + -0.29760463644929613, + -0.2414565095616007, + -0.04737138783972106, + 0.011096723474450898, + 0.5257392959630703, + 0.25327999186747674, + 0.6552489472900979, + 0.48850043278264266, + 0.3983407059644216, + 0.5642907402334728, + -0.5644446550705225, + 0.2322330254825239, + -0.010000643423106359, + -0.05908466289179892, + 0.4946286848441984, + 0.498972967515226, + 0.45415637195863756, + -0.33440019420118766, + -0.7516185198309601, + 0.10480845244189751, + 0.27129038573755293, + -0.11843259020809549, + 0.26878404118711197, + 0.3031715711387285, + -0.677195653076197, + -0.4862757565405449, + -0.07362036349745837, + -0.2335224014324696, + 0.25134360712823167, + 0.5494715300798351, + -0.0672602697192376, + -0.6865872699788121, + 0.5996684788665688, + -0.7880393429437355, + -0.2756730721838818, + -0.35782216999680444, + 0.61837777979247, + 0.26557949926037494, + -0.4048307658947597, + 0.48470052873398684, + -0.4920354323986954, + -0.36983327860720094, + 0.13519149893687898, + -0.14224077271508606, + -0.23243248296628782, + -0.6339686721014173, + -0.5659150423589333, + -0.35717358271151484, + -0.3369711888164919, + 0.17521367257906229, + 0.5915273203877139, + -0.4415773513713179, + 0.1917618158269162, + 0.5267896465592498, + -0.3657419976189678, + 0.2873853340999045, + 0.3885793274063961, + 0.16422351018398462, + -0.7367292701251379, + -0.04768250689982656, + -0.5793103687114085, + 0.27613925530707106, + -0.5225027807029476, + 0.2828016656796032, + 0.1857593770914192, + -0.588066268815504, + -0.052903518151069084, + 0.18809614794697338, + 0.33647609795774003, + 0.36067952442048534, + 0.5478869129337295, + -0.5911304298969753, + -0.3131456906182175, + -0.8070164766650566, + -0.27932665038379756, + -0.16888633653452667, + -0.43134668148904864, + -0.6149815013236324, + 0.629392748555106, + -0.5585854881420251, + -0.6711850072310593, + 0.27806411432667766, + -0.5865723003040398, + -0.4659318457251553, + -0.28240378783151054, + 0.6228486116684154, + -0.39298677888461664, + 0.4878524602843751, + 0.41260443528078816, + -0.6438576778842996, + -0.3608135400527468, + -0.04015502478367672, + 0.3194408650017396, + 0.16953829232329298, + 0.5859602140514893, + 0.4198378450582839, + -0.5818826419304749, + -0.6363070513059172, + -0.15928907367799505, + 0.6290908903482003, + -0.3601749420360275, + -0.47662759238892194, + 0.04812209966798586, + 0.42293138759298066, + 0.4305886935701101, + 0.5312020302052679, + 0.3195983399815633, + -0.13670822971714391, + 0.06935627043122927, + -0.37484652784216216, + -0.44460803294390483, + 0.587381784276995, + -0.28688290144187834, + -0.011787941136510827, + -0.43797293532152765, + 0.6568962931925718, + -0.3611661204940649, + 0.09131894423029674, + 0.6420853527638876, + -0.28559562890343615, + -0.42036915797558755, + -0.7657133144938758, + -0.1820956600859579, + 0.6225863922516092, + -0.35586036606856075, + 0.27139563676419554, + 0.44316807432020544, + -0.364949865206406, + -0.48123443350547906, + 0.21010921902357393, + -0.048805329137146636, + 0.02732465386938432, + 0.13713777682933637, + 0.34227877816569474, + 0.08734930654941053, + 0.5732506701628558, + 0.3176005746659921, + -0.7664634416468888, + -0.6406830082938871, + 0.07722663025521292, + 0.12881603049238421, + 0.27969227648118367, + 0.5906718814144364, + 0.6221844491996172, + 0.4833832466179465, + -0.53148328485787, + -0.5606533108700986, + -0.07427279588709645, + 0.41338180090317656, + 0.31715324733234496, + -0.5229576145214949, + 0.5645037112055479, + -0.12803608836705882, + -0.10544375087244162, + 0.46580744088201864, + 0.30151937096904435, + 0.26189342445298747, + -0.2223578404035491, + 0.4690896916608839, + 0.17490924316671774, + -0.4132445339303366, + -0.43885727860684964, + -0.32988536051865003, + -0.7994488565526151, + -0.6956427671709634, + 0.42028234534358544, + -0.410328727123899, + -0.7165174367258744, + -0.6226629041864504, + -0.7767193872493733, + -0.13017535350307252, + 0.21704777429458233, + -0.7162708305793032, + -0.30846571698586156, + 0.6167910187620617, + 0.3399442527032889, + -0.10064835338800326, + 0.2662247480154666, + 0.21967314698755935, + 0.3023713747286062, + -0.5172634059125967, + -0.5542683875506549, + -0.5978703480034648, + -0.0779348762953983, + -0.6081074751258904, + 0.4944752114969916, + 0.49420131690377345, + -0.2708791266316324, + -0.8058913184988435, + -0.18928587545921172, + -0.10794659895819247, + -0.2521819155265562, + -0.6125552364392275, + 0.34424745685400515, + 0.31502474101901246, + -0.6439629607809559, + -0.059540825782767204, + -0.3416636805729835, + -0.3717628429262871, + 0.2254835030080432, + 0.07503086873953435, + 0.22833493140845607, + -0.6571409161597783, + -0.37246181461678646, + 0.34674544463461354, + 0.1812226215975965, + -0.09138098946601603, + -0.2162406828948531, + -0.6030734133291096, + -0.5885402913054656, + 0.5743139397806415, + -0.5674142960838315, + 0.3615529950627959, + 0.0813539970981324, + -0.7987265324604416, + -0.0063867995209977435, + 0.173050080512539, + 0.17653953191100968, + 0.2341277359473236, + -0.5017982582915625, + -0.3445523783282629, + -0.7489389737003262, + -0.6975759354104263, + -0.4487727146102944, + 0.12930731157263886, + -0.7973920630300269, + -0.4070371622650498, + -0.7393858729413967, + -0.389348640946649, + 0.4395350671845172, + 0.3393144362701409, + -0.581430276531107, + 0.370568714458101, + -0.4716304394488731, + -0.1612480687311999, + -0.11135508052601939, + 0.15655797388103687, + -0.15551224447054646, + -0.1579613625199332, + 0.5170853573172237, + 0.37871664337277366, + 0.4298139155355566, + 0.5056272180984943, + 0.3849925999117262, + 0.6355992623440098, + 0.460305776804773, + -0.10090882754377739, + 0.15574563627341265, + -0.5687522228711869, + 0.44580341503693, + -0.07837681459058177, + 0.06416293545022067, + -0.39292333482247094, + -0.47664602215767315, + 0.027567337684918924, + -0.34148051194070383, + -0.4883296452524546, + -0.6514354746563722, + -0.19584195759548684, + -0.5176771358073835, + -0.5755706953135115, + -0.08679025989169553, + -0.5686109909977749, + 0.45257910051167916, + 0.42249183326707096, + -0.5089004791209494, + -0.5213612385396069, + -0.2142369922918479, + -0.04933672149907775, + 0.33059119931491654, + 0.06011960029922769, + 0.4282464206125923, + 0.31967097401179034, + -0.12007776210067889, + 0.3341135750547851, + -0.4337848682376992, + -0.2763585027800991, + -0.20660125153210962, + 0.5633095976207426, + -0.03330776769997168, + -0.007108468989926564, + -0.3494467646859112, + 0.6376025657825536, + -0.22843167197800762, + -0.6350297878508664, + -0.20434675383989243, + -0.4478721532803174, + 0.2503428255519379, + -0.782333810970986, + 0.6053076118074175, + 0.4521563051489058, + -0.44559171491948346, + 0.07604784884627658, + 0.35520961221468494, + -0.0763336996150743, + -0.4948899455063018, + -0.39043507626458346, + -0.3509054708743125, + -0.29440764721347634, + -0.6933730070020365, + -0.11858583834679237, + -0.3746311841835871, + -0.14728183073393186, + 0.3515619549724335, + 0.4785055741552192, + -0.1581899092658191, + -0.4467468127950527, + -0.2058573823563773, + 0.4674033374604806, + 0.022216487308391986, + 0.16818379864600086, + 0.4931267794425095, + 0.15236390837551095, + -0.5110246094660849, + -0.1321818299740617, + 0.5018613827584429, + -0.5625259234049966, + -0.08749889585374926, + -0.6348444768415737, + -0.7388275004069236, + -0.14855390437834415, + 0.5780765800689481, + 0.24727681093016762, + 0.4326509935888644, + 0.5297462854710208, + -0.13937091739497043, + 0.527926082782937, + 0.562490683472277, + -0.02587174240467216, + -0.1029817544166527, + 0.021599319583191723, + -0.5802077119531882, + -0.7816518902012686, + -0.06122049902983706, + -0.2382339298298195, + -0.18747102466420762, + 0.24852624695943037, + 0.3351337501978039, + 0.39596800823932743, + 0.1528840754240448, + 0.46543205922576025, + 0.05372573462059338, + 0.539452928016681, + -0.7418108344248174, + -0.44278685805515694, + -0.7825231048175048, + -0.4195534188838794, + 0.21762150425743332, + -0.517150118107554, + -0.01441454547987242, + 0.0016204987549606198, + 0.555595728873889, + -0.49406913913172146, + 0.053089109061856044, + -0.26671421776074744, + 0.24029777669533614, + 0.6576335394736975, + 0.090774008938034, + -0.04576157122764157, + 0.06500680897751654, + 0.24176364771808723, + -0.06172866045765657, + 0.2342052457012752, + -0.037732871379776545, + 0.5743988326150277, + 0.49504102382800974, + 0.5095553579117821, + 0.3416404522082682, + -0.03615173369000513, + -0.676158833069763, + -0.72746930427273, + -0.058741280355799064, + 0.45052951341568204, + -0.4833863126112252, + 0.15517546121805426, + -0.27895944614921064, + 0.6509781215834652, + -0.42990230289172887, + -0.716238676781893, + 0.5049205499397581, + 0.20324429872032435, + -0.31197975949455165, + -0.40896788232656034, + 0.0029110091792746706, + -0.07319698232653049, + -0.015128993011679914, + -0.11616417704253135, + -0.4055410040117586, + -0.21875928739194384, + 0.48695822684003487, + -0.40640449054873284, + -0.6982410234652283, + -0.6469996442084007, + 0.5985589344220371, + 0.30639199124156147, + -0.22284248025071707, + -0.7912692146343965, + 0.21717019622969425, + 0.22050675751422177, + -0.791939885371092, + -0.0700419350267314, + 0.1923360669171953, + -0.7287725066902785, + 0.11769445247816701, + 0.10513800407978902, + -0.0558648956177501, + -0.634345003279447, + 0.11450508951028693, + -0.3445021637975401, + 0.21017561285559883, + -0.4627038012599868, + 0.23201001506028673, + 0.4914448731306983, + -0.27607499511086175, + -0.3540197068902837, + 0.49300255213264255, + -0.3803870527052089, + -0.18064874410003384, + -0.48171236246960003, + 0.1269202536419225, + -0.501060506601808, + 0.14332101570212907, + -0.721596556904119, + 0.42399075590907176, + 0.2286415814218251, + 0.3036472094169981, + 0.2541125904403646, + 0.3783274840305112, + -0.40372546755490174, + -0.4085845655798936, + 0.45403205923336654, + 0.4890006989664676, + 0.2300658286131455, + 0.5466442573457438, + 0.029395806125493973, + 0.27825748105108417, + 0.002180137695481532, + -0.2857288314861439, + -0.7812574233236377, + 0.5652675585960393, + -0.13436080932283323, + -0.3199360595905154, + -0.15828467251676503, + -0.030468447555640044, + 0.07415374919217765, + -0.5159540027018603, + -0.09803877727822885, + -0.18221625738588387, + -0.03551316932192472, + 0.1748390903039928, + 0.15655111521567378, + -0.2852319698038963, + 0.27219424601306386, + 0.03180088501471179, + 0.4613393135371425, + 0.6184737130429624, + -0.24056408403522977, + -0.1600050446513871, + 0.6034402117632279, + -0.0098046785635717, + -0.35632136440599205, + -0.5634058149312995, + -0.2123800913029399, + -0.7036077804523945, + 0.07095525100926225, + -0.8003782414689555, + -0.6220584604702554, + 0.5329434971873664, + 0.04980250242733075, + -0.7342145476898054, + 0.5771763978281109, + 0.01968845490917881, + 0.120800469663357, + -0.5163224421823933, + -0.1757449261742554, + 0.059790793979866086, + 0.22167166424876072, + 0.6022391144771589, + 0.08173614155550246, + -0.4860202674595504, + 0.1212592389250261, + -0.6719819992110725, + -0.603187862035374, + 0.09777099944216394, + 0.355603384158829, + -0.40371672151880034, + 0.328289280896232, + -0.43258855000573776, + -0.44624543021841107, + -0.07658608882186635, + -0.16788030926380149, + -0.7182122965850626, + -0.2685284042882108, + 0.00939081251084839, + -0.28838550334639734, + -0.7701060977573823, + 0.25855176100419863, + 0.2001455970972178, + -0.4112605245672707, + -0.3398000397917175, + 0.5359004581816659, + 0.2539273845995217, + -0.07920086612667987, + 0.2323169692184185, + -0.7097980060908408, + -0.0012423625306735575, + -0.7345676172642325, + 0.046665091553287574, + -0.373937661040994, + 0.3954676514898964, + 0.5460953549735911, + -0.37839873329554746, + -0.0394127846947695, + -0.4419494870331962, + -0.43781463327500847, + -0.5192272401344031, + 0.24964120487541097, + -0.2963741710140736, + -0.8013313891692556, + 0.28049256159353575, + -0.47790877948633653, + -0.025476837387226614, + -0.23044957874177996, + -0.10958249029645739, + -0.7448205875620502, + -0.6131240299064048, + -0.09130874127123034, + 0.2857287319044769, + -0.1391835177486619, + -0.4859328398588169, + -0.7834986880952152, + -0.560736223629569, + 0.36395776918455447, + -0.26747810415199225, + 0.2051947399659212, + 0.09769075190950516, + 0.33163205373144533, + -0.19135124658286562, + -0.5900359669522354, + 0.0015952439673727614, + -0.22535367148849106, + -0.12180616239741116, + -0.45047298577226336, + 0.25405246190405106, + -0.10172057376767707, + -0.737285527102213, + -0.7575763584074334, + -0.6079388038843105, + -0.3507713123941528, + -0.7607583000960008, + 0.08803195961326815, + 0.5862713741250837, + 0.015970346762074872, + -0.38149311111752854, + -0.2813560005980683, + -0.25072610183800303, + 0.1433345066163909, + -0.8058781208698949, + -0.6034095953615473, + -0.7166945373345305, + 0.3075741855275095, + -0.40904509816647056, + 0.07522134271220549, + -0.03375926336822632, + 0.5049722275646865, + -0.2049707095742851, + -0.510728278769397, + -0.5676532708831079, + -0.5341016161514989, + 0.1158554463128949, + -0.29809049695818945, + 0.12618182060719885, + -0.3522180886826241, + 0.18528444243611075, + 0.24351955042477658, + 0.16538195755436136, + -0.5844680428741763, + -0.4452296682579553, + -0.4209751811665656, + -0.6085736545062788, + -0.46738805045967735, + -0.5143303642420678, + -0.2838902084453474, + -0.40849831051851254, + 0.317686889061389, + 0.19017943697676787, + -0.08639222392964108, + 0.48674795506605906, + 0.20298525860041916, + -0.7991980329659426, + 0.04672156762014279, + -0.09576938174280014, + 0.6150725013720061, + 0.5891961624719081, + 0.0453631357475196, + 0.3809894691000325, + -0.7728955888374, + 0.5320528093620184, + -0.5112519521038985, + -0.6572326783905027, + 0.504368979275171, + -0.4987918376822062, + 0.1836064387779872, + 0.5200909123729295, + -0.7390282454519588, + -0.30509611276327975, + -0.6696089457872997, + -0.13816434306649283, + 0.2428119042732254, + -0.47070775121599534, + -0.09165474287344655, + -0.19478722477483867, + -0.17015733570189717, + -0.2175139683265903, + 0.375825249780556, + -0.7194659254936239, + -0.4905753340738999, + 0.37400073340837714, + 0.4205876986261864, + 0.5335831161016352, + -0.4570076802383014, + 0.2557648520427033, + -0.4075336514732723, + 0.6522977018365194, + -0.7920863172494634, + -0.06612269974798413, + -0.002069184294965387, + -0.11639755192907997, + -0.4735329889801274, + -0.6881028400030471, + 0.27543881566863726, + -0.7125038774522338, + -0.7390719312548593, + 0.02235801309749652, + 0.40773816277588126, + -0.5249542418323223, + -0.7920407929078993, + 0.4341952877067433, + -0.3526146537574461, + 0.46894278400689615, + -0.7813802804629377, + 0.19103975583305421, + 0.09587042349223995, + -0.5044191679118063, + 0.39968100768895887, + -0.7551250426121333, + 0.5925348848744457, + 0.15805131636455183, + -0.4093934646365584, + -0.380800332901504, + -0.4579206831571593, + -0.31453751859608564, + 0.6387663455259024, + 0.16404898794932088, + -3.1498463430756907E-4, + -0.34105474556951954, + 0.43982419588678623, + 0.6245530569590841, + 0.1708481670855473, + -0.3129738239795349, + 0.4376709300300038, + -0.2927440167028119, + 0.09512875102206364, + -0.7444453219395235, + -0.44348734137714685, + 0.015374170191923109, + -0.4793978827369162, + -0.1745724670223734, + -0.6345708586151612, + -0.31263627000962596, + 0.3984394611472243, + 0.2589855708240346, + 0.650151347469282, + 0.3085958108704697, + 0.1412561784187364, + -0.10438030995973868, + 0.17490030322382166, + -0.0871862140368227, + 0.41527055488520837, + -0.22160374805196703, + 0.3852113561717855, + -0.008692758412074286, + 0.41620217585463626, + -0.17849284056064652, + 0.5304128011130395, + -0.7750203700338053, + -0.5665385878948526, + 0.5903872070266013, + -0.6255277294241397, + 0.5376390896734958, + -0.08824091255671163, + 0.05254327003096437, + -0.12784114324212514, + 0.633354913798485, + -0.04737782304611815, + 0.15436379750716067, + -0.6294845587681172, + -0.30276797995932503, + -0.6153684369091029, + -0.21844856335417673, + 0.3658382679685944, + 0.6331878902573284, + -0.32813172621394904, + 0.36677299361555515, + -0.7291477107083437, + -0.25362601029237564, + -0.4634425612006736, + 0.5841312106487048, + -0.10460139016181225, + 0.2362992483039873, + -0.6330709618426014, + 0.34465130934417, + -0.6626792288224572, + -0.766178967896262, + -0.46954605349659145, + -0.3069729161323582, + 0.07535262037757307, + 0.6172177636772241, + -0.21025308557986233, + -0.3823558230767732, + -0.1045656238988264, + -0.5189450809602756, + 0.30977247764431726, + -0.18905465143175548, + -0.08117140386687549, + -0.6631233897363045, + -0.5276897999334855, + 0.5163953416193775, + -0.018716148613351247, + 0.6299158950952154, + 0.5396184090052895, + -0.6038054838067926, + 0.2625196503937547, + 0.6288720568323883, + -0.38137236543398656, + -0.45050373338741245, + 0.3993724599262628, + -0.6118855581183533, + -0.27533771433623266, + -0.16415577733236608, + -0.6670139503243935, + -0.6100915659427907, + 0.313598814391325, + 0.3156219916713844, + 0.3649641795067352, + -0.022691728840721015, + -0.3862173563144694, + -0.252569548903529, + 0.13353335601430438, + 0.20877003255631543, + 0.33411835655300204, + -0.692539071735581, + -0.27497804699773654, + 0.13237733426689857, + -0.7080461584806346, + 0.17670584204808115, + -0.18813061889325222, + -0.21213982878116056, + 0.5589498010352408, + -0.1448144200157372, + 0.5801629183925247, + -0.6966166638199227, + -0.010355151981914612, + -0.6781525648743887, + 0.05227649631420905, + -0.4603203281129968, + 0.1512480780384552, + -0.3849408858786166, + -0.5313157967700564, + 0.37264299163308146, + -0.24844946238344756, + 0.5768767555685538, + -0.4629816983119276, + -0.05905495250332238, + -0.6277991852642829, + 0.041726711079052126, + -0.29190419237676735, + 0.03528038333860428, + -0.4684824715425836, + 0.42627734752978264, + 0.10519554866057801, + -0.35657623033840136, + -0.2195363418324866, + -0.06674588172245688, + 0.5734482171778347, + 0.02028561277877028, + -0.6746506301587126, + -0.5283612032830325, + 0.39543668283145916, + -0.5840278438190372, + 0.125829079921704, + -0.5069277706902977, + 0.5605621407287776, + -0.25922047425376293, + -0.058284470329559634, + -0.05588558754288753, + -0.7866501488451908, + 0.08179668073099533, + -0.15580542981434098, + 0.23432030338204657, + 0.3792962802825296, + 0.12503761806709912, + -0.007958331459044898, + 0.185337544540512, + 0.07012467326110317, + 0.04085682098538301, + -0.19587104432320823, + -0.5836238803612958, + -0.6099895458927994, + 0.2503568862079203, + 0.3568238724514513, + -0.5311011683872338, + -0.7549054784928809, + 0.3863800787015249, + 0.021398898888737472, + 0.5481787528152636, + -0.19845869310352626, + -0.32140810487045346, + 0.43090769444370347, + -0.7974580748215503, + 0.09458623495908358, + 0.6271736698954876, + 0.6074137106525127, + -0.59881837893545, + 0.11392054812709118, + 0.10145946862714794, + 0.4545056949927223, + -0.3458276845969578, + -0.6218282385511203, + 0.4986155302305698, + 0.5423404956373615, + -0.7108354764053149, + -0.6055974336986474, + -0.5912179333203156, + -0.4690573720084226, + 0.6141754710899828, + -0.28100242316468405, + 0.3682251383102556, + 0.0824281460129268, + -0.7838339970610338, + -0.2877106515198834, + 0.11536827495565505, + 0.436873157595827, + 0.018461822579350584, + -0.31949233680971606, + 0.3856047479128776, + 0.4372818385015588, + -0.41181664800236534, + 0.35162567130805467, + -0.3713243712662971, + -0.5864488114015708, + -0.7453959150091778, + 0.6528247940719903, + 0.3601041161468105, + -0.04205848491659436, + 0.5436618433354353, + 0.6206673105083603, + 0.09159986801631026, + -0.6299047924954095, + 0.43874289007830847, + 0.3159469443654005, + -0.13057999151087907, + 0.5739540112758773, + 0.22669912860184505, + 0.5879419028029992, + 0.051405701139080495, + -0.5320042539545411, + -0.18998737141870758, + -0.01661382830024971, + 0.5928683514780065, + 0.4208462167863166, + 0.3155740016764318, + 0.17241201123636818, + -0.6422863232248389, + -0.7450054611733831, + 0.2167177575501188, + -0.45708132576333227, + -0.34223101890053825, + -0.17525134827021294, + 0.5389128490225384, + -0.5653007886038537, + 0.6135254919560259, + 0.4214846721929416, + 0.4812088059259375, + -0.7245535635947117, + -0.7486558984845816, + 0.6547662743351131, + 0.21579383027222254, + 0.27287149701541813, + 0.3454146509444692, + -0.5009733303903208, + 0.1001309637709239, + -0.5446302067043254, + -0.754450798736934, + -0.434714469976221, + 0.04189984921099865, + 0.5851530287255257, + 0.3422709460730532, + -0.7280476114849611, + -0.6245577360216115, + 0.5636623113899905, + -0.20184122215995404, + 0.015314214279704919, + -0.1071442138770815, + -0.7459312151277527, + -0.46366450429481665, + 0.43801364937048637, + 0.6311067128666658, + -0.6927124974289931, + 0.48144950766301775, + 0.1750130708002008, + 0.4366094107646562, + 0.5384813509858325, + 0.06314835059000068, + -0.23158502574483297, + 0.0411014949006665, + -0.023001806409465586, + 0.3756723527940383, + -0.0929633900892739, + -0.3661618291625113, + 0.11247438321812342, + -0.010335155321305023, + -0.2346626564055846, + -0.6074247210751097, + -0.3550011093818805, + -0.3199025974387961, + 0.3094492661204383, + -0.6537355249163981, + 0.6213234737905856, + -0.7305137794802261, + -0.4163414487247493, + 0.19845182359167068, + 0.3301616256239167, + -0.7680439622313756, + 0.4125066071880842, + 0.1700546856792836, + -0.7305582285697326, + -0.29852522546649884, + -0.09819288467360965, + 0.41185202181565195, + -0.6147368415754991, + 0.29025465855743315, + -0.49839699243429886, + 0.19826895876614603, + -0.7402186623088383, + -0.5985655488637746, + -0.6187597106365201, + -0.11937850814831497, + -0.3551530527936301, + -0.6343957322278153, + -0.7430574862363035, + 0.08657982533732334, + -0.1574607933348039, + -0.2923634832275118, + 0.30384008073672975, + -0.3768613971960984, + 0.5708092031277284, + -0.6022174075588116, + 0.32540662147937527, + 0.5328087675361034, + 0.453178519288031, + 0.5246530367538754, + 0.09695872942924533, + -0.6390825948886486, + 0.5381610407199552, + 0.007642140331203806, + 0.40023225657981143, + -0.09562163808742707, + 0.3753409710201169, + 0.5039804758317664, + 0.447569561015252, + -0.32043898418726435, + -0.6990408416246189, + -0.04631471503771356, + 0.33901354120987015, + 0.4708290698128167, + -0.3401164795299312, + 0.468283096365382, + -0.28880248635966077, + -0.2377666886932822, + -0.1958187110340922, + 0.5688291802752331, + 0.04261277849537792, + -0.37029683856249085, + 0.3173786398120485, + -0.5886154695991402, + -0.522264920716582, + -0.5282741100770139, + -0.48384717835550306, + -0.28713947057916633, + -0.4454707653598717, + -0.7502310654510012, + 0.3244354790059022, + 0.26557313213813616, + -0.31962240247748497, + -0.2993100055443527, + 0.34731224250057136, + -0.5038014362492731, + 0.1998898653855522, + 0.027328322625116086, + 0.3885564872606607, + -0.37778760974931413, + 0.11249366898514912, + -0.15942154349695736, + -0.21812627101854087, + 0.08503155913139904, + -0.14645583813858942, + -0.32424341819004215, + -0.5370435676186769, + -0.1463320300714932, + -0.23297088358979678, + 0.2777345385123259, + -0.3899109394766677, + -0.6313114370554606, + -0.04430718603666162, + -0.390956767223345, + 0.35478837605582225, + -0.48706010444500414, + -0.1253587473616914, + 0.10580644356199076, + -0.5689643510691392, + 0.43283212620498335, + 0.2561389863448479, + -0.15277806350979117, + -0.3553778643775371, + 0.13219563683626168, + 0.3440774136826429, + -0.03317940204129388, + 0.1704546271344365, + 0.5079687606223048, + 0.36763510932389243, + 0.4345054251128836, + -0.2680847244105171, + -0.264272810350928, + -0.12835143008224048, + -0.7815180800655174, + 0.5667438509707169, + 0.508417431307122, + -0.7702148686511748, + -0.7427885217726937, + 0.2472097911886092, + -0.3369226839338411, + 0.2150753351963789, + -0.7944785115210358, + -0.3998210859700662, + 0.5365978551156122, + -0.2361399035237033, + 0.12302452017903631, + -0.5297435156487529, + -0.3149255872797417, + 0.5047101518229588, + -0.5968149782915888, + 0.0519844563529287, + 0.5381886901563472, + -0.08843127049539612, + 0.2779145516954816, + 0.29369372441648467, + -0.11145305664760286, + 0.20551629945039307, + -0.27928922942399137, + 0.6201857059634835, + -0.43740834562336783, + 0.07445801825223586, + -0.005286461193175551, + 0.41497872045553696, + -0.6616833664679135, + 0.14078340177458604, + -0.4249910651817229, + 0.17102794935959997, + 0.4023605742008781, + 0.10578475260500331, + -0.6125409151061613, + 0.35109029601770014, + 0.3919053664966624, + -0.30527905026139435, + -0.26821213028948576, + -0.11654426964697173, + 0.12144455853508851, + 0.31668776825952893, + 0.5283792882458446, + -0.012700349959462565, + 0.07387086983626523, + -0.6634806050704234, + -0.22941773764229478, + 0.44518953654437954, + -0.250287747380155, + -0.7531331963832071, + -0.3395425956393742, + -0.5079503256935665, + 0.06009823046984175, + -0.6378009646909801, + -0.7105491171283114, + -0.6896780189360239, + 0.26466138192136357, + 0.5776442774190521, + 0.29932360859023166, + -0.6179741265637362, + -0.34816052676303677, + -0.18264236527528732, + 0.4266224766011494, + 0.026667378538263176, + -0.05476686170676537, + 0.41458527754451036, + -0.7913971990954426, + -0.69947362983857, + 0.4524379241545943, + 0.29791787726145247, + -0.08257737861101788, + -0.23670693966474943, + -0.6347282309861921, + 0.521489050255057, + 0.13718584033920422, + 0.542483372235207, + -0.5926069094348736, + -0.6503576984521892, + -0.6987832328222177, + 0.5047902537318733, + 0.004984454547737438, + -0.4142950522873363, + -0.7607564210389817, + -0.3139617215658897, + -0.29187010699420735, + -0.1757050398773844, + 0.2087321013251805, + -0.38135586722483156, + 0.44896293366965223, + 0.12679116528340773, + 0.34953820877764097, + -0.014754513857092477, + -0.31803931508313127, + -0.751781156331612, + -0.22730262032602744, + 0.1029128415229601, + -0.4257132014456985, + 0.45226438028237836, + -0.6861300253624423, + -0.3873570840125936, + 0.44209921977328326, + -0.22730968951567865, + -0.7758229610042993, + -0.08447261017343066, + -0.415477302026921, + 0.5667826782943836, + -0.4732917462022489, + 0.506880250424799, + -0.3612023350188101, + -0.030015283309399066, + 0.5018379240721117, + -0.11696660359780187, + 0.3163743751592202, + -0.7925448888377893, + -0.02844841763446815, + -0.22929119760021166, + 0.40256357127622555, + 0.1398883462634436, + -0.2934643606026408, + -0.6221332514592222, + -0.4387870070912106, + -0.35745270909657195, + 0.27463001713572, + -0.3881369591827885, + 0.24516998997606898, + 0.5748984915411764, + 0.017524012606514705, + -0.26006482002601594, + 0.008761493180547753, + -0.35611181222028593, + 0.006266825075592397, + 0.3192393232427705, + -0.009394895870203257, + 0.22921417121045085, + 0.59583937978226, + -0.3554352068518551, + 0.580827447897165, + -0.7412341303003356, + -0.3410650621964998, + -0.271086940424612, + -0.7728638289934571, + -0.7949652667383206, + -0.2769084448371706, + -0.7298581318634962, + -0.2513416871147356, + 0.24081793373871185, + 0.10922624573112949, + -0.0541014680128884, + 0.6120877118536502, + -0.3832525219558189, + 0.2008919236515, + -0.48341067405614835, + -0.7471381265569967, + 0.3655200067475418, + 0.6187093261062563, + 0.38881150372716633, + 0.031271401843625646, + 0.295532724827931, + 0.10030913042000067, + -0.05787366880190703, + 0.5583650840968152, + 0.6139848070735011, + -0.40867510822012965, + 0.26463696046438356, + -0.7416661560681922, + -0.61573475710375, + 0.131707842161904, + 0.12753640043854642, + 0.42569074343917535, + -0.3656170934115125, + -0.29355234493750737, + 0.11173975765527033, + -0.5064443371526827, + -0.23433631711645786, + 0.09233029891183775, + -0.18776709841844874, + -0.12045885861396477, + 0.40810715411977305, + -0.5643484246887911, + 0.10469278480533706, + -0.6814441678625499, + -0.5711690513849196, + -0.5241944635987554, + -0.49088171486524174, + -0.757053241990778, + -0.6376521485102413, + 0.4948382914424251, + 0.6220426699959679, + -0.6698550169402442, + 0.18140562838347574, + 0.34378806080324564, + -0.35552753049126995, + 0.6146857484496909, + 0.4176165492800915, + -0.1830392727108512, + 0.6412114513750543, + 0.01620832456996668, + -0.035110141841141806, + -0.6369749135304877, + 0.007179542222735202, + 0.5706664907244606, + 0.005017989889955055, + -0.3891524916437782, + -0.7845154701430548, + 0.402724862901242, + -7.283920178804415E-4, + -0.11688282274256978, + 0.436263351612587, + -0.19942056701265354, + -0.4790632445365585, + 0.5573460215570015, + -0.22297603828519497, + 0.6435983065826715, + -0.2026175398875124, + -0.7366700341762881, + 0.10107755035309884, + -0.17488158946200394, + 0.24428938548914003, + -0.6620020297759469, + 0.40136827943785713, + 0.39537670456159135, + -0.3383067515348361, + 0.22936503695554544, + -0.6323956880335808, + -0.019680837275675045, + -0.41114340461276516, + -0.006079153603618659, + -0.46056925994615405, + -0.4852952584877976, + -0.06527374729458901, + -0.20377539628489172, + -0.040414410293211134, + -0.23227224366487542, + -0.42032557279863303, + 0.2412804747237255, + 0.02653928233948577, + -0.7497152721044097, + 0.4508265416195735, + -0.24141260433017753, + 0.5135487238403901, + 0.16992666428884617, + -0.6011131368532934, + -0.6289439763084249, + -0.3154987165515437, + -0.41736149653615784, + 0.4447500210146905, + -0.5042703193871504, + 0.06412719768042119, + 0.2573346816152403, + 0.0816130999350414, + 0.3173811058882693, + 0.29595060189892874, + -0.1910516600238128, + 0.20058294465688575, + -0.08875759841395958, + 0.21906864639643897, + 0.3341222761450694, + -0.10457063038753855, + 0.6088958670334513, + -0.3814243676201579, + -0.4459696542220709, + 0.22749825300538096, + -0.6041375498021132, + -0.5582657175219928, + -0.38017323106697853, + 0.22499579676831993, + 0.19014096094551136, + -0.1138260053394734, + -0.6180053406520379, + 0.5267459111385583, + 0.449816725231616, + 0.3328739356326661, + -0.12694868840695672, + -0.22972184981468757, + 0.16509000843691768, + 0.5308807079788641, + -0.7848958767782852, + -0.5200189520633778, + -0.18899472902424475, + -0.4419538354224838, + -0.20734758434328915, + 0.43167244970394913, + -0.03158284805617284, + 0.15641620518842037, + 0.6196552796422895, + 0.4865950154212809, + -0.43746850743698323, + 0.33703191804762456, + 0.024069191089879927, + 0.3220498372993984, + -0.5414703149501001, + 0.6218957564063855, + -0.6086988446610262, + -0.09476513102560002, + -0.20013479883119156, + -0.32525140909819233, + 0.5445371142718382, + 0.5196347106335336, + 0.31243055448163737, + -0.7156042549546292, + 0.35075583672885846, + -0.5907332284091602, + 0.22324977106503596, + 0.6002736576931554, + -0.008950797615311479, + -0.29170496224651, + -0.04213372176238195, + -0.20596651010797629, + -0.30007247611206533, + -0.12182614242094325, + -0.3784135732914046, + 0.6335056139990313, + 0.5205028417048007, + -0.09270015298453538, + -0.05443950613778026, + -0.7641970323606398, + -0.6735398289966051, + 0.18947756180560693, + -0.4579159362080438, + 0.48813223123288985, + -0.16265246177463555, + 0.1126229894898707, + -0.6360297248751426, + -0.2927025232442536, + -0.6840937736822628, + -0.6548247497091875, + -0.11501395039293116, + -0.4797994712157948, + -0.30573538003672884, + -0.7744636749637998, + 0.11909930656445433, + -0.42900391484143907, + 0.20477336658223855, + 0.1436518759231712, + 0.22533826866932138, + -0.18823160254279736, + 0.6311810118460576, + 0.05021909707046657, + -0.30906363530361547, + -0.4052689484693318, + 0.474919690272391, + 0.6518937621927136, + 0.499390714967208, + 0.47335063010639844, + -0.5236705038175987, + 0.50793914423191, + 0.6168312281312202, + -0.13504539768513957, + -0.7292783008742661, + 0.25461901234585127, + -0.6974536399702043, + -0.33829141480057406, + 0.026237742476862724, + 0.13034831743690956, + 0.2739140282246896, + -0.5627130716319532, + 0.023401507514204445, + 0.6441174471863319, + 0.04915254241253386, + 0.5250772177029576, + -0.581834339530509, + 0.548217217911601, + 0.5160297762441491, + -0.5094962729053174, + 0.560350282942229, + 0.015171073164488735, + -0.3615948755852992, + 0.384287327948437, + 0.21378475178238843, + -0.25591119674034835, + -0.3131489081832676, + 0.45009611302793673, + -0.39738519615533113, + -0.6034657730346928, + 0.020294324935732355, + -0.18223152398442366, + -0.17106100717195982, + -0.4967571302314775, + -0.028567925871977207, + 0.6068359881134128, + 0.16494710972655457, + -0.07616002106967545, + 0.4509537251912471, + -0.008979560624645222, + -0.7011438994726192, + 0.4030590451277264, + -0.30228397291847375, + -0.5574784249536384, + -0.6054375790120512, + -0.16933398829714508, + -0.23697173813014144, + -0.16254945688715017, + -0.3182135275910153, + 0.1286636100654961, + -0.07454361400722276, + -0.3585345163815771, + -0.12433736589135302, + -0.1032939965892441, + -0.315499568870803, + 0.023349709738075153, + 0.2812170771303433, + 0.12801110342474542, + -0.11648051226809819, + -0.39586674583531, + -0.3190725552444395, + -0.2810132834514293, + 0.3510154234107393, + -0.2002369507803894, + -0.0931895490849044, + -0.35279961062477094, + -0.049113610502525495, + -0.4344521670247625, + 0.08151386547298334, + 0.1556587699682328, + 0.00888049100517141, + 0.3462515952374837, + 0.3040401566178498, + -0.6909355718730885, + -0.6517889545747524, + -0.3454017159968334, + -0.3726017780538137, + 0.4106854124037246, + 0.35924662659337503, + -0.24531933456501337, + -0.401676444444175, + 0.2795725065206116, + -0.49549399723047605, + 0.16947129766167668, + -0.2824928300664756, + -0.21354695880056845, + -0.01556845788611605, + -0.018147818310230823, + -0.5241610601876245, + 0.18520739604038605, + -0.1180177329751384, + -0.45357627491598224, + 0.31817582207580297, + 0.340165724506568, + -0.2937967621884198, + -0.07810217316275303, + -0.1777676116651451, + 0.2531679439003466, + -0.26422783141088263, + -0.38005764297125394, + 0.04598413032024529, + 0.20018496036596867, + -0.6936902756687742, + -0.35220487898931224, + 0.34525652660440576, + -0.011299037561393499, + 0.36670812274778275, + -0.7019766174591385, + 0.2250075608430634, + 0.2782455844574979, + 0.3928480999763321, + -0.26913026317720273, + -0.5307192112023421, + -0.6505191466804601, + -0.505888717252615, + -0.3420328282559603, + -0.6312564911558629, + 0.18547888357554687, + -5.258905392778734E-4, + -0.016950593044684048, + 0.2986555801188119, + 0.07278602247513388, + -0.049774356246870655, + 0.17045517291380086, + -0.5278655685557092, + -0.4971329572410501, + -0.17216227389652794, + -0.009619597645491362, + -0.5164088368020392, + 0.24122034774637546, + -0.664015070143575, + -0.42114409835750205, + -0.15233394640567954, + 0.16025857111694097, + 0.24601920718710768, + 0.11146156864507117, + -0.4879590540014078, + -0.4134345640945945, + 0.17268674838563458, + -0.6224162553704259, + -0.2770153297314797, + -0.09052667464881137, + -0.03753618138625858, + -0.5959053002478626, + -0.45549732961337985, + -0.37855212645515113, + -0.19509923099425042, + -0.3291675365759759, + -0.2797856394004112, + -0.34910519453429456, + 0.05421448440538368, + -0.0706599207935884, + -0.5823402957446061, + -0.44276758499583196, + -0.677300103938786, + 0.20848625835767376, + -0.3775952549564716, + 0.0051347105455459285, + 0.36815281446356274, + 0.24111527912127095, + -0.26355825862648136, + 0.3206769505067736, + -0.039186782809589205, + -0.23337601483849624, + -0.4884240686270128, + -0.6185039572862462, + -0.1453378465337236, + 0.28856621384327097, + 0.23770063432018607, + -0.29641665552053625, + 0.014171051515559197, + 0.38770623695892226, + -0.6113057049869739, + -0.027426150011723105, + 0.16334022796047654, + 0.23970621613423182, + 0.019230571333441637, + -0.12029926540668179, + -0.6979159739289182, + -0.6642423952341723, + 0.1503531115472121, + 0.021102254338979387, + 0.2501621770807966, + -0.6827033638867493, + -0.06971574658475133, + -0.06127865877016159, + 0.33245745245345504, + 0.13312640807442988, + -0.6132161608831116, + 0.3754156693826908, + 0.214986941166746, + 0.004063006924723944, + 0.21678331026694986, + -0.2738783538122359, + -0.058631450935392904, + -0.029283421513292884, + 0.050699798459361234, + -0.07303926794688098, + 0.23985252759084796, + -0.21113496629317652, + 0.14430205381056282, + 0.12398985629326154, + -0.5697677242431091, + -0.23267961083524757, + -0.07698937281322982, + 0.18630926103013157, + -0.6964253672358951, + -0.2732917393096783, + 0.1860636821444397, + 0.12170813059744323, + -0.03887910648393644, + -0.28626526417109416, + -0.6133065095116782, + -0.07592521789453421, + -0.4661393178145659, + -0.2692731311851273, + -0.44349206333407637, + 0.1873922209211185, + -0.6012165096704886, + 0.39882011010636165, + -0.6276589447995504, + -0.16684604194724684, + -0.5043155287758172, + -0.3011362706047791, + 6.182928950426714E-5, + -0.5324339519975194, + -0.09409086626748164, + 0.20545629344026917, + -0.41964720227582253, + -0.6615299115743883, + -0.26170017007148233, + 0.3801621142412289, + 0.23346613936605276, + 0.324927081404475, + 0.2379952546805031, + -0.4711025326505498, + 0.20541643332762194, + 0.011327434639790912, + 0.4059608393760782, + -0.2628395373539663, + -0.4883973635314905, + -0.6203518067530661, + -0.013667919997689681, + -0.3682829908797452, + -0.2886877622577152, + 0.2776882168175073, + 0.17850623379693809, + -0.635070234251631, + 0.26991310630727106, + -0.5770877689563234, + -0.6819089364380764, + 0.08418263751119703, + -0.5558331518089962, + -0.1631744248658954, + 0.3941188510482351, + -0.19228088031234536, + -0.6888032825129659, + -0.44932734044350336, + -0.14322670950419747, + -0.20817795919492182, + -0.011522239764491515, + 0.18600796892611704, + 0.20686037807269486, + -0.05359651189105308, + -0.3363625945728731, + -0.4482164118256628, + 0.10300568964721402, + 0.3178368185323631, + 0.23316229972063418, + -0.14932216184810687, + 0.27995748060157966, + -0.4260757047581906, + 0.2833586463908955, + -0.360728239021434, + -0.4591780702417582, + 0.40087371171865904, + -0.3183914897422838, + 0.022459524590291546, + -0.5552599650205766, + 0.3575118207468583, + -0.2060029162588889, + 0.12488003734725672, + -0.17281831173916617, + -0.7018145442230223, + -0.2846378031794134, + 0.20875880701459604, + 0.11576534441314223, + 0.07719457455532874, + -0.013441282576179159, + -0.651324945620109, + 0.08490234043961353, + 0.2843899635778827, + -0.4366168852383602, + 0.3798077845306703, + -0.507308535038659, + -0.516308249066177, + 0.38628036531177423, + -0.6854102219301548, + -0.29756681940121077, + -0.4609079287279727, + -0.16625601107535704, + -0.25106185821366556, + 0.027986200921835236, + -0.19816640403641927, + -0.2024539693075449, + -0.4734556750419104, + 0.17276122924864146, + -0.42632390188125835, + 0.1773775068328457, + -0.10592753401768507, + 0.0075265291410774315, + -0.27995018945204764, + -5.29169671247165E-4, + -0.1841938090103723, + -0.3401442825159749, + 0.20863414230850874, + -0.16208770691626884, + -0.3694137347354832, + 0.37574542103005404, + -0.407066423439746, + -0.08074249199783134, + -0.09652536018453428, + 0.2976053151139263, + -0.09205392591881656, + 0.37946919858593053, + 0.010773217318186146, + -0.024584309690660833, + 0.351014749873498, + -0.4772408029166706, + 0.08151749069246184, + -0.4277893035764807, + 0.15830844851958104, + -0.3257749524856795, + 0.018384786319506463, + -0.3867583984967916, + 0.06348995580796268, + -0.21381576711838057, + -0.16054274377950273, + 0.07283246171623858, + 0.054881689835378444, + 0.40591931245814317, + 0.2910496362759515, + -0.3958903398619779, + 0.1412096155427761, + -0.3338760120658403, + -0.12033029251651306, + -0.5657436691534332, + 0.15219751545429894, + 0.17950961223752204, + -0.3100129316869786, + -0.49562047208326754, + -0.005938198036125053, + 0.3284098611382654, + -0.5103027325813387, + 0.06838597185376094, + -0.5804013285019918, + -0.1604434256631021, + -0.34541978925078376, + 0.04537969892256566, + -0.2661508430653749, + -0.3532179701185064, + 0.060909137593090246, + -0.46645801815028665, + 0.09893536289728311, + 0.1393068568207475, + -0.621521780985702, + 0.3603889861159547, + -0.2736956955176723, + 0.39538398194260094, + 0.18945147993394917, + -0.39048094193193517, + -0.6482192822519615, + -0.5201034430799477, + -0.25398494624814716, + -0.5476968784876475, + -0.23465179963580296, + -0.3068047403118221, + -0.0385823005689816, + -0.4030487379320165, + -0.08791594220722909, + 0.26723350195392637, + 0.27923475505971906, + -0.12477488733404285, + 0.09172831285089822, + 0.037723453533699325, + 0.1644926970788646, + -0.21716306084017561, + -0.33325435451041163, + -0.10417622503125479, + -0.22992558940521007, + 0.335458506437187, + -0.23304397227263152, + 0.15998261465114505, + 0.23128894232858466, + -0.6995773333429893, + -0.04577521311342114, + -0.39775384910704764, + 0.02714624387413822, + -0.33661244118635464, + 0.32985864277413557, + -0.6420595224481771, + -0.30786338988647016, + -0.025521620079939744, + 0.1644137551564, + 0.3253535260891015, + -0.670134864469691, + -0.4187468218737342, + -0.15510291517999042, + -0.6721927591100297, + -0.3292210962492864, + 0.24405106456159276, + -0.6024378939310748, + 0.1686354826006582, + -0.07666227753728261, + -0.1763042429928865, + -0.11924112660503938, + -0.49549751198398106, + -0.4404234722562272, + -0.31449428439134985, + 0.2429524981889597, + -0.014186909672743053, + -0.2500575012154166, + -0.42755492322431554, + 0.13655939815461493, + -0.367638449567925, + -0.2714923037108875, + 0.3016785165816699, + -0.40785460164575094, + 0.09161159838489252, + -0.3956064569777634, + -0.2322771495381732, + -0.34126929266661526, + 0.2117843541476231, + -0.4349189955277412, + 0.002319530620454202, + -0.008620859956774196, + -0.3884780414723412, + -0.1006905844820678, + 0.06547345457440024, + 0.29836506933699714, + -0.5303347692847384, + -0.36370537807891884, + 0.1541933203644439, + -0.506242854912629, + -0.17512028264947388, + 0.26831060006373386, + -0.6889754613970502, + 0.3003772622594022, + -0.31633800947352636, + 0.2469186828429849, + -0.24045230302986392, + -0.2800814316382597, + -0.18377609205162604, + 0.03376214183208115, + 0.3370123834607416, + 0.3439756654497187, + -0.45197810479456224, + -0.5559268726274396, + -0.34352049549127667, + 0.2982701161126188, + -0.1351938635389064, + -0.25921904394492484, + -0.2458503885486667, + -0.4195221502424128, + 0.2854855185429618, + -0.2825135240129763, + -0.07713549127859354, + 0.34611439220192, + 0.07531552063813007, + -0.41839223810022186, + -0.653523012200806, + -0.0826490812562588, + -0.14577313943840942, + 0.00896113646294805, + -0.6402329365355955, + -0.5717522907602499, + -0.274656807999528, + -0.5408699450139051, + 0.27028631732487207, + -0.2511764300736036, + -0.06132724156794789, + 0.2295308360436228, + -0.025353941035965444, + -0.20074344917373066, + -0.09112611233944501, + 0.013793932907944506, + 0.3053806697999045, + -0.06910183947525228, + -0.3097283619937729, + -0.4491236383365157, + -0.6522480677914633, + -0.12521615892278826, + 0.23984072802822176, + -0.2619771129885305, + 0.17174207190180957, + 0.3532019061909969, + 0.3160696840582421, + 0.14155943031147444, + 0.16258100445274482, + -0.506148798542532, + -0.39203164710602184, + 0.2083204269784713, + 0.37537271369656955, + 0.26940851866268, + -0.5295604434606785, + -0.6186533998984457, + -0.6164503461538894, + 0.41327445726631307, + -0.5390994765009973, + -0.040071192836395375, + 0.24467943484664434, + -0.5549301997678682, + 0.33513396161374975, + 0.08945009693412287, + -0.05101105988064203, + 0.1791985016889035, + -0.05490006542385184, + -0.09469259672599994, + -0.5569647489398709, + 0.2125323604438888, + 0.10719733507526763, + 0.17257332004151082, + -0.4319173551705631, + -0.6877300349252378, + -0.6288444471319501, + 0.16487238034913065, + -0.4753995102143641, + -0.5514703417821993, + -0.3971391083901975, + 0.07235484582470875, + -0.4130491103108409, + -0.6046160654286163, + -0.6658911115068862, + 0.33706828741847417, + -0.49567073212598467, + 0.3999881229125498, + -0.1990486101895076, + 0.13177782566521057, + 0.029145611335843258, + 0.2746550298652195, + 0.010579252228644975, + 0.3144754073193917, + 0.2663855763715156, + -0.13685396963697294, + -0.31075888062209567, + 0.3870377892733884, + -0.44671915233122245, + 0.2878299207874885, + 0.23982032873888304, + -0.6121262024992572, + -0.08791505052634652, + -0.011950058254645124, + -0.364209094451192, + 0.3632723554369982, + -0.49918743203035265, + 0.25158643613161413, + -0.3782554925040454, + -0.008819755147309372, + -0.5928018529483794, + -0.4766711367526506, + 0.059198443097987274, + -0.35145542283288805, + -0.2424287403376822, + 0.05183606567636323, + 0.0044124607362658885, + -0.16869646559394658, + 0.09801721636771887, + -0.4073286191370399, + -0.08063596535616546, + -0.6934958082477112, + 0.14299718518658433, + 0.1210016450936936, + 0.037330825843778115, + 0.22063694891918328, + -0.23219948451386224, + -0.1264723338208441, + -0.6373583952577221, + -0.18843146213532092, + 0.11028026383634926, + 0.35031282262068364, + 0.2852577049779893, + 0.39736231466709937, + 0.15713311618099324, + 0.2331076574776888, + -0.5296910252001858, + 0.3634075434343135, + -0.37791326905139316, + -0.464855500155118, + -0.3124604956132304, + 0.41728465966003003, + -0.3924223655815363, + -0.01706296906829141, + -0.4487461278790364, + -0.38629948205012804, + -0.1771449851127227, + 0.3834675883777189, + 0.16441433043107856, + -0.21630764643283595, + 0.2574358184357324, + 0.3653560195690039, + -0.5623930529058729, + -0.4529309214835349, + 0.14077441376288835, + -0.3616407799042873, + -0.38901305565115823, + -0.3786773219135412, + -0.16865391376972916, + 0.16343626956556434, + -0.2095136646917815, + 0.0194516985722617, + -0.07303029525403992, + -0.06785750630605036, + 0.21644644072585872, + -0.2849700047635852, + 0.14826801912280718, + 0.3813607411217136, + -0.12916785574199574, + 0.36865923362735675, + 0.3028252551179006, + -0.456624124830668, + 0.11211740333289766, + -0.19276967409352785, + -0.43949405317998197, + -0.4033609769686504, + -0.6172324982935643, + -0.25369599058131004, + -0.12785310544445494, + -0.4616096580287403, + -0.4826631039246423, + -0.4429858083382267, + -0.1255040944320599, + -0.5882226096762384, + -0.6437321311407904, + -0.2886812190651505, + 0.11416379886238337, + 0.298311881257301, + -0.5435685968666275, + 0.25894722019294847, + 0.2770243171229475, + 0.3306840387255817, + -0.09085453869757365, + 0.14688385530469084, + 0.14690870318038962, + 0.15884136885629863, + -0.5937772172392476, + -0.5100561524922727, + 0.3092074153362946, + -0.5432919636286178, + -0.1600185099650513, + -0.3684144433751327, + -0.0026241109391855755, + 0.20700155071148185, + -0.3424884308911739, + -0.2090960669140549, + 0.07428407120091596, + 0.1466886270871911, + -0.613274948900755, + 0.3064902015371075, + 0.4004306082714325, + -0.44331044654538604, + 0.12369306012504688, + 0.15034781301910294, + 0.10115580992909723, + -0.14773501527120025, + -0.3926261213443726, + -0.0701394479940397, + -0.3596930042000318, + 0.13717126863471563, + -0.6889664953881282, + 0.3872574160285721, + -0.228923920245447, + 0.29875162293274526, + 0.15438305401784747, + 0.28088009610028086, + 0.059646632783112774, + 0.17909509740678586, + 0.3992294036037899, + 0.32495729899706494, + 0.3572213967285188, + -0.49470875470210973, + 0.27717700350524055, + -0.37303159735871094, + 0.29998595929513383, + 0.0677165589233304, + -0.5579080862328576, + -0.3615843523686778, + -0.6423347663379569, + -0.6133507815507868, + -0.6841971278533461, + -0.534614863425937, + -0.5571080221844908, + -0.5537719649347068, + -0.6103235641433737, + 0.06070994092468063, + -0.6657455803005383, + -0.2912218242636571, + -0.6072647705616993, + 0.25026905944957467, + 0.07579816294350028, + -0.6238901679240318, + -0.3744040455086936, + -0.07529377950625704, + -0.019203073239693724, + -0.6623316689825955, + -0.11920139573952881, + 0.37918226956278145, + -0.38060774490190163, + -0.6219819430721941, + 0.37433072260063927, + -0.5692939600048944, + 0.05782929623167621, + -0.4189518207780573, + 0.18704880200332008, + 0.18103708288623632, + -0.3859167229662019, + -0.5308344369072249, + 0.31499724805704254, + 0.03690713742113605, + -0.6735470840717839, + -0.660942848204592, + 0.0973881785813211, + -0.4461549544060369, + 0.2695311847857279, + 0.361144219242847, + -0.6214763884238584, + -0.339776139045989, + -0.587709529804905, + -0.6956694241364589, + 0.15460762242939163, + 0.3739581260633772, + 0.09016315371398964, + -0.45989584313290177, + 0.18984318683536994, + -0.15455729998756695, + -0.2235548512319424, + 0.4177071876824948, + -0.5459171498556221, + -0.69661736467596, + -0.2537358741731797, + -0.30194106762252587, + 0.0965392245609713, + -0.2653102173943053, + -0.4096748236096164, + -0.3658012070439785, + 0.2723884590010711, + -0.2847203424682436, + -0.6399842287757097, + -0.1261062381924436, + -0.348266196759814, + 0.07042003569246202, + -0.30049577446994385, + 0.020603031471744693, + -0.6502835217521399, + 0.031242828907953157, + 0.28510128057271067, + 0.01349451507920918, + 0.13065110215885334, + -0.19473517417846453, + 0.19379820755662436, + -0.1843312360602657, + -0.6620193669340066, + -0.063046878258597, + -0.4490454789002669, + 0.4029815076858766, + 0.37223887351608986, + -0.19268592330090506, + -0.5461318341089568, + -0.34547007188091994, + -0.22471364695953405, + -0.36291080711262186, + 0.018694023715536523, + -0.5498396059069668, + -0.32099613558874673, + -0.5536222803239758, + 0.17689833069236582, + 0.32011565918286056, + -0.5879457608148078, + -0.2119050555085356, + 0.28500201522306057, + -0.5076593899770717, + -0.4232626478551743, + -0.6624138259424022, + -0.3126425884969723, + -0.6855505418896418, + -0.23800989786204918, + -0.170400441935057, + 0.021120678696635586, + -0.21474899980247547, + -0.11196484309446131, + -0.4255327325525052, + -0.4526498901604806, + -0.49537263336844206, + -0.3038172317986636, + 0.28939516712598834, + 0.31345322851229895, + 0.07246626550804769, + -0.16225950635348974, + -0.5090813864147972, + 0.14826504903791837, + -0.3184623107826686, + -0.15509134503096156, + 0.1162962964253822, + 0.12823519958227492, + 0.084800230579539, + 0.1698337748436659, + 0.05782551492579813, + 0.3646968922459589, + 0.1137449518647966, + -0.1917496881848033, + -0.4193073846559642, + -0.27562024180458866, + -0.4048903439852049, + -0.5844283507016059, + -0.11544875250451503, + 0.006201952463404825, + 0.034100123263759996, + -0.4213484921187778, + -0.41270351765952845, + 0.1876381293574546, + -0.6896186599324616, + 0.14640702208207912, + 0.052226691870783104, + 0.4008714255400717, + -0.29853187133317854, + -0.18179683396831026, + -0.3764341245333425, + -0.3049764047697996, + 0.2529162946181085, + -0.29834627219138166, + -0.5851436686906049, + -0.15452453913036746, + -0.39124687027561456, + -0.6796041833413478, + 0.08721913278284787, + 0.11671560689975669, + -0.457281032867889, + 0.22814223691090219, + 0.1151361923177574, + 0.09072310768919911, + 0.008264903328811801, + -0.28667611052916153, + -0.5221247425068524, + -0.18599920696036498, + 0.31513409446340523, + -0.2859846429555432, + 0.04775305987487466, + -0.18717156121934198, + -0.4823299628640667, + 0.09103541814450922, + 0.08249635254576404, + -0.28801172044433343, + -0.47993698958565756, + 0.11242583600521994, + -0.26454811966176106, + -0.28600467513493005, + -0.13834516839239674, + -0.5182435386777353, + -0.17665675623627908, + 0.09491662659997013, + 0.18440398104319822, + -0.2215914083447345, + -0.5398489385200477, + -0.4698383460602136, + -0.6123081844888072, + -0.36013777909046885, + -0.7006848561528152, + -0.23029812796060606, + -0.08358847647171008, + -0.333222127429511, + -0.292976882976256, + 0.3021253696513987, + -0.5502882424650664, + -0.6816264295469997, + -0.30222093650851944, + 0.0025862941857617283, + 0.28485426082404874, + -0.1364944540703742, + 0.2940390431853156, + -0.37515057812384356, + -0.3722825550114266, + -0.49840048223492783, + 0.22076712577755053, + -0.2561894099520757, + -0.16462795197375502, + -0.05627457745876718, + -0.3558508962720519, + -0.6010393877562694, + -0.44647935708699704, + -0.2162512962462914, + -0.17204616824465768, + -0.575537344141318, + 0.12272539242564229, + 0.13903311642943272, + -0.27049963489255363, + -0.6620677825043678, + -0.31035251048275975, + 0.3441489493037181, + -0.3550802398079024, + 0.17019921052520892, + -0.5009994630845045, + 0.1613482111917316, + -0.5818535310200825, + -0.18859826098826493, + -0.29411461351574225, + 0.34967686859732583, + 0.18817352994402337, + -0.26720441450104504, + -0.455170427023156, + 0.16381215874863853, + 0.057128083279991526, + 0.5779425653132095, + 0.6439705537967042, + 0.5652571475877366, + 0.6133337248158657, + 0.47447782724622894, + 0.5921644994807571, + 0.5496031465570355, + 0.5422027161842274, + 0.5134108923608844, + 0.6718052882467412, + 0.5255133568214381, + 0.4294863673123209, + 0.5721092824359152, + 0.5185972764154879, + 0.6246539409545555, + 0.5844848664617269, + 0.49951373839820923, + 0.4375939588210674, + 0.6725197131668648, + 0.6424281543874679, + 0.4719908310594352, + 0.5249882048773278, + 0.4514132708830425, + 0.5725886406375031, + 0.4948104298169378, + 0.5959399948047035, + 0.42445999859002503, + 0.6699252938806572, + 0.43155081939585277, + 0.6419727286934089, + 0.6402660941239895, + 0.6044199529354389, + 0.4349903463198891, + 0.48704977242227687, + 0.5748685305025525, + 0.6440750973931403, + 0.5747789146990099, + 0.4295332635382282, + 0.5186474349114933, + 0.5219013462767729, + 0.5699487637831819, + 0.5464137260627577, + 0.44745712498577417, + 0.5473644069365604, + 0.48950244001033133, + 0.4519726714783, + 0.6561008570583636, + 0.6087939260020652, + 0.5910886531573347, + 0.6483426624212391, + 0.4499995188003953, + 0.42428604199756176, + 0.6391756262094748, + 0.5085816694325153, + 0.42842395102687736, + 0.6298675828298803, + 0.5633311434017048, + 0.6213358156203891, + 0.5633776360494829, + 0.5692437811854734, + 0.5972282058538262, + 0.42997963886770485, + 0.6641943928878217, + 0.44227129345994576, + 0.5799627998837689, + 0.553579220176923, + 0.5469233039119461, + 0.5115001597302199, + 0.594200974906151, + 0.4911386140193395, + 0.5327685367632135, + 0.43762556681044773, + 0.5280415485346921, + 0.546938689406345, + 0.4430324055046413, + 0.5741556832523527, + 0.6248597312628457, + 0.5318475996630727, + 0.6524810150257707, + 0.5866744982510367, + 0.5002990459348203, + 0.5231666116154559, + 0.6204837286277582, + 0.5389128270385158, + 0.641750228315416, + 0.51204735949476, + 0.48234449423392256, + 0.5398022256865876, + 0.5499558346621722, + 0.6551053591681905, + 0.5289337037872017, + 0.5555687955324681, + 0.5196324485509445, + 0.46865350855760324, + 0.4437482592929627, + 0.5753946124541774, + 0.4735043677169636, + 0.4240591086365346, + 0.46052855778067164, + 0.576544154388041, + 0.6517755215794987, + 0.46386519165446644, + 0.6724169258006052, + 0.4350995883792854, + 0.5254561156916678, + 0.6018316709819317, + 0.6023759071883996, + 0.6428868399612621, + 0.4954640579979236, + 0.5379385859275558, + 0.4679242318471965, + 0.6144798432067886, + 0.4657266302773468, + 0.602628290005263, + 0.6193168848570574, + 0.5331613240495422, + 0.4286166760187622, + 0.6490944338570694, + 0.4860393681864434, + 0.6037704343358766, + 0.5470707897004365, + 0.4348475918677409, + 0.6330245444595658, + 0.6580951702441901, + 0.525761999765382, + 0.5415550494651035, + 0.5662443612123158, + 0.5627668893055788, + 0.6606828517547385, + 0.4234960046211018, + 0.5855306371630796, + 0.4919432776101699, + 0.5677733423200912, + 0.6320097342685249, + 0.6244590051743719, + 0.6694859109317959, + 0.5080189658856744, + 0.44379046830004243, + 0.5531705137684269, + 0.5403977869240999, + 0.6401591420151709, + 0.640653469443078, + 0.4791421577030953, + 0.5792820375176726, + 0.5384756235410184, + 0.5039950982112772, + 0.43693143755155694, + 0.6213199591325702, + 0.5611983261123538, + 0.426843019337323, + 0.6742385771643613, + 0.6054885660266494, + 0.4936304932205403, + 0.6745748277809476, + 0.6521901787097825, + 0.6321176718935841, + 0.43107886115050803, + 0.42006829423691655, + 0.4796110403522711, + 0.5307703966469114, + 0.4377094104639722, + 0.6253994523895243, + 0.5568117367553209, + 0.5192105090174995, + 0.49482804796408675, + 0.47774706736931466, + 0.5600569613271126, + 0.43055566958552544, + 0.43603323550944934, + 0.5988533558872381, + 0.44864897684344723, + 0.4689239801562637, + 0.634839265605339, + 0.4326038196430433, + 0.6743253091031791, + 0.43415282870185, + 0.4249980077165624, + 0.4386626792544888, + 0.42896473360543763, + 0.6581408473288961, + 0.5040411840876557, + 0.6400417576964512, + 0.46295882720478937, + 0.448696488321082, + 0.5223260347106409, + 0.4426889741575391, + 0.6313615494032425, + 0.45237019549616514, + 0.5721314194720034, + 0.667351716381194, + 0.5588826505919386, + 0.6011739176634275, + 0.44762156709301504, + 0.6221933317752357, + 0.4422481312671818, + 0.565928529647885, + 0.46095714402597937, + 0.5777736428438409, + 0.509303689243547, + 0.6748536745417312, + 0.41948882008504146, + 0.5158233419431135, + 0.6482223909632493, + 0.44255628520410223, + 0.6317062194409189, + 0.45616233156034586, + 0.4771284623381092, + 0.5875666535236956, + 0.51465319171075, + 0.6435350815154633, + 0.42016374316225047, + 0.594554164007632, + 0.4229816477345631, + 0.5640559868402435, + 0.420159612450993, + 0.5910097108754021, + 0.583584260123412, + 0.4848034281943342, + 0.61801915303778, + 0.5156982037201063, + 0.5140615790919251, + 0.5636684877363076, + 0.6744503886275859, + 0.6622330502541035, + 0.4916574580521237, + 0.5196556743161692, + 0.5761891610346607, + 0.558392043832338, + 0.4431549074249609, + 0.5363091178732162, + 0.5688096250670465, + 0.5735751509517875, + 0.6684985649722165, + 0.6278687316925267, + 0.4872847864593808, + 0.5397530822751104, + 0.6237577906950712, + 0.49519824860732653, + 0.5302921601097917, + 0.5663995944537632, + 0.5873038041452715, + 0.608268566897915, + 0.5554355810588748, + 0.4368285747952263, + 0.44090683133464675, + 0.6268705837733707, + 0.451450550852859, + 0.45442188622854485, + 0.5611315339932366, + 0.423859599124376, + 0.49894412608146443, + 0.5679755375186117, + 0.5185860323830859, + 0.5914379195430136, + 0.6538395034097455, + 0.5419234757148846, + 0.49588915988542553, + 0.6019075369521769, + 0.5502478434039698, + 0.6391015991910791, + 0.5304924001575865, + 0.593813529798428, + 0.6706321052896864, + 0.6512687654774597, + 0.44343036812820114, + 0.49631402471012775, + 0.46744606993041166, + 0.5609020756006207, + 0.4731675256495215, + 0.4211734296295701, + 0.4682949387576446, + 0.5808007444000103, + 0.5996343542796293, + 0.4396429463412783, + 0.5686351713193514, + 0.43295742718027314, + 0.42147568396603613, + 0.6633437019617325, + 0.45806164086780077, + 0.575770723679832, + 0.5872432619059903, + 0.605640248435941, + 0.530017516345671, + 0.5082676761701408, + 0.43669586115968395, + 0.618748967568082, + 0.6567444654542223, + 0.6477110129159571, + 0.6350356838814479, + 0.5869802247573116, + 0.5656846006055686, + 0.546457287224236, + 0.6304346203135788, + 0.5829180058712988, + 0.4418391451146105, + 0.5928204580266738, + 0.5828894509545818, + 0.511788409316098, + 0.652614149660203, + 0.43651827017522177, + 0.492987739799886, + 0.43233728593903653, + 0.4710867840083012, + 0.5931528660985692, + 0.6662117688886626, + 0.6306303121729, + 0.6655057720437917, + 0.5562095834663906, + 0.4724263793246081, + 0.4370109791627369, + 0.603613523893892, + 0.49935847469511446, + 0.5586734759035676, + 0.44984093429294153, + 0.6057017070468672, + 0.5912633926005133, + 0.65977812604903, + 0.5340952106550568, + 0.5666179446537236, + 0.423549871083612, + 0.4715347456588524, + 0.502937700401244, + 0.5429083943684312, + 0.6640205686678792, + 0.5005231112683645, + 0.5215260991551054, + 0.6533759755336583, + 0.4664693567663054, + 0.6043346622383458, + 0.5014030943059662, + 0.5676264277006591, + 0.6111646576726006, + 0.5234881779025315, + 0.44732589127820177, + 0.525622337214773, + 0.6592872900005924, + 0.5668168513429955, + 0.5107070427193491, + 0.6146639613823004, + 0.5455085859847784, + 0.46962125626736423, + 0.5948096602000557, + 0.4461260142305585, + 0.4896995738793779, + 0.5569841271611292, + 0.5447845830463482, + 0.6642425487516881, + 0.5600363314758106, + 0.5401776183376693, + 0.6625219940749861, + 0.5862584765728798, + 0.44616187341623315, + 0.6448793691833665, + 0.5713730868921391, + 0.6079594483779706, + 0.6639220656427156, + 0.4855565925445031, + 0.6733049868430641, + 0.6138248000536257, + 0.448392190619243, + 0.6588954200574442, + 0.43977386669409546, + 0.6443197367358461, + 0.6132859403077117, + 0.5320373444675652, + 0.43287675415525145, + 0.5252038470224653, + 0.6033450440936889, + 0.6166595092033813, + 0.527726840393649, + 0.5401175149705322, + 0.5049807667330133, + 0.5414671555833679, + 0.4779231672943125, + 0.5962367902006497, + 0.6354856646771282, + 0.6047582145918826, + 0.6325616996403229, + 0.623643906297046, + 0.5399126438770627, + 0.5803661973841674, + 0.4443227082624155, + 0.6607714419119123, + 0.46637438003909076, + 0.6373336912809238, + 0.6683672820985256, + 0.6236991603702745, + 0.5322542936174705, + 0.4759165696913342, + 0.5971998531887247, + 0.4887027634402013, + 0.5403343085228159, + 0.60822134781191, + 0.5994992373244357, + 0.5882387737432092, + 0.43561821319591026, + 0.6001826373625665, + 0.5537325663404746, + 0.47133398128107, + 0.5793673083013624, + 0.5806446161547452, + 0.4804276258064229, + 0.5303998341273229, + 0.524406632001299, + 0.6091742298994234, + 0.48252208812167513, + 0.4887094263994116, + 0.6524797172565195, + 0.47166465832250026, + 0.5217208857586941, + 0.5616368319236871, + 0.42453219583994584, + 0.6222917924943577, + 0.5915123513266984, + 0.6316566764791216, + 0.46847068945545745, + 0.6734825530022559, + 0.5076155869997369, + 0.6565654086694616, + 0.5336339967717157, + 0.5584779074423735, + 0.5651010065252706, + 0.4591291187341617, + 0.6203557935785269, + 0.6160707726221597, + 0.4803700105499507, + 0.5661940446282346, + 0.46523714564185265, + 0.5048314286458779, + 0.6707079658368352, + 0.6165153278273929, + 0.6265064443788075, + 0.45185466946840896, + 0.4431405864009634, + 0.6435203058292901, + 0.6375248852640913, + 0.5773705991589192, + 0.5649983869134625, + 0.5463433332523473, + 0.6657122812749052, + 0.6176562370645335, + 0.6205723749793204, + 0.41792874301155786, + 0.5006424078147248, + 0.6312239351015735, + 0.45951885756101246, + 0.5870767715229919, + 0.4521134283721228, + 0.4653871081297259, + 0.42139137609052596, + 0.5677604266562928, + 0.4358234088712175, + 0.6215626947715761, + 0.48155608401041833, + 0.5011670032874367, + 0.4557408747862781, + 0.5199415495954155, + 0.6053221637023009, + 0.4954802273204102, + 0.43982158698494433, + 0.5735818458836688, + 0.5554705365299905, + 0.49467083341683127, + 0.6185038587461522, + 0.5523805861647428 + ], + "y": [ + 0.6666058106589906, + -0.6275223725150068, + 0.27749733836385937, + 0.2734034814790117, + -0.7175004596399989, + 0.5863355069113533, + -0.3750537393816175, + -0.05607200530899825, + 0.10278077023946186, + -0.08921989491936888, + -0.8469192679987135, + -0.018159479392680478, + -0.8656747721103595, + -0.8357749738293861, + 0.5542326595141317, + 0.17974022045381777, + 0.39213521084958114, + 0.2286227309811909, + -0.5660825750024856, + 0.10615234431851384, + -0.48627814545860903, + -0.04367915613828188, + -0.03071058518115255, + -0.8046517044761368, + 0.117469531448266, + -0.6852524206587929, + 0.577659839743946, + 0.6525862050663834, + -0.46802837798235497, + -0.6371528851349687, + -0.08401825767624005, + -0.11994849155408915, + 0.15498879923484166, + -0.4296885665851982, + -0.0918618162072723, + -0.702394963772518, + 0.07619979073869054, + -0.45631253796065774, + 0.24055256867101316, + -0.807856677779504, + -0.7331394547276625, + -0.33236852200552514, + -0.8335011288259746, + -0.18368987252999514, + -0.13285173760657532, + -0.7256162270452655, + -0.7011782634347644, + -0.5971794938744686, + 0.013801489692748525, + -0.0019442706192479564, + -0.7840748843213746, + -0.3774537319857801, + -0.8194474349622156, + -0.15373730833776345, + -0.6226667228388664, + 0.05960187420656615, + 0.49018611489886477, + -0.06931311646810867, + -0.6118337632411734, + 0.21466447228876662, + -0.7069918750156958, + -0.565707081541037, + 0.25219022364780785, + -0.12128218694923532, + 0.0435121835512301, + 0.43437868326591966, + 0.3498742014051138, + 0.2937202220482814, + -0.4879107624863442, + -0.8431696699512381, + 0.47128767952521244, + 0.39715782354731266, + 0.4093979680954368, + -0.2754716149313442, + 0.3927059325698844, + 0.16163387620810588, + 0.6134344739651144, + 0.4989525538784402, + 0.4641495485375816, + 0.4494335327277218, + -0.8704993237666484, + -0.1546108682577071, + 0.13768965589862725, + -0.6365510678500255, + -0.33899402761298425, + -0.6336695034500428, + -0.6944098898841129, + 0.6037127658087721, + -0.5023750984700437, + -0.8363416394021067, + 0.5901074892215842, + -0.15623165872274802, + -0.4639471107854012, + -0.2699639024879039, + 0.6089743154510739, + -0.13446666279265906, + 0.639422549696605, + 0.5895142224436197, + 0.29143975838335845, + -0.7886817474422991, + 0.23313864326939127, + -0.5649781281716582, + -0.30235861590802793, + -0.7461995588454036, + 0.25645667907364833, + -0.6835502017081007, + 0.07098992017896677, + -0.24926233994314106, + -0.5150046451356816, + 0.2171504202740696, + 0.15508116337982958, + -0.1726071214778424, + -0.16872631096284496, + -0.07987457867943693, + -0.3988233438810945, + 0.09018380331618814, + 0.5526543393562741, + 0.6215032225693417, + -9.380646665602121E-4, + 0.20567153846937092, + 0.1451170483120824, + 0.4960515678607681, + 0.38739151042467024, + -0.44134970509126914, + -0.2125465241281288, + -0.8662625620056745, + -0.2454093544286714, + -0.7565669367322918, + 0.38543216788551937, + 0.13514360187416552, + 0.1506835255607376, + 0.6253969234435707, + -0.7468261109835104, + 0.22779642843535342, + 0.5091740574790767, + -0.8457623266408381, + -0.14836628750855485, + 0.6089602503454258, + 0.5656370034831509, + -0.3336527055486763, + -0.508858698035447, + 0.11094372181936352, + 0.5440414613095111, + 0.33305591764360865, + -0.4245168135803993, + -0.8427330769509144, + 0.5941956535903828, + 0.18419106038827004, + -0.3841152424075892, + -0.3725505385034983, + 0.48264758367410143, + -0.3722079752830858, + -0.05813429667398473, + -0.8059505787514516, + 0.4682378542731206, + 0.12962818532980613, + -0.41061961162866123, + -0.4397732270288138, + -0.23422342414154707, + 0.3197876588992955, + 0.3762548500850845, + -0.49375206421843, + -0.36468238019017196, + -0.31595207880102716, + -0.058622601846185285, + -0.0819373874580771, + -0.026294703081305437, + -0.7333976350634521, + 0.5871689272172541, + -0.2669539534603903, + 0.18944201707163588, + 0.049313901772380264, + 0.622200683570883, + 0.4997890289885297, + -0.07335224296024823, + 0.3390351229857501, + 0.028089542063767348, + -0.37891646238684534, + -0.07570079387349826, + 0.0446426140012276, + -0.4160784644966179, + -0.15464039433561905, + -0.5277291987415961, + -0.7842281560931817, + -0.5943957257573894, + -0.18751189624176723, + -0.15161010062629943, + -0.6595028173028665, + -0.49168597911831013, + -0.20294035420903778, + 0.4820484207677652, + -0.21540740698298877, + -0.357283407270792, + -0.17775071687851118, + -0.18418657917500414, + -0.2725741720344095, + 0.5601126086725304, + -0.6821440644291283, + -0.6714120230040121, + 0.19342644448169144, + 0.533708306458235, + 0.4515743329679741, + -0.22845447395093688, + -0.4636288401626982, + 0.2261171690774345, + 0.6625489741929783, + 0.4419149616405543, + 0.3944399196014844, + -0.581661113592369, + -0.09399057395574806, + -0.5835152498225822, + 0.6712288094609408, + 0.3604183900051793, + -0.5691880661016439, + 0.10063463738304701, + 0.5224921768005432, + 0.023594173649594374, + -0.16632808566513158, + -0.06617712876236004, + -0.6058299524809305, + -0.35109231607599656, + -0.6358807043729054, + 0.4465838287202256, + -0.24905747868039974, + -0.3070149868368832, + -0.35649870653286664, + 0.3752078603453445, + -0.5030404049123106, + -0.3342405362841072, + 0.39463391311963536, + 0.34736690927703695, + -0.7440047841145556, + -0.08459578184816752, + 0.5436958637667196, + 0.6636216112375007, + 0.6787179171382675, + -0.11978361879997212, + 0.4248871223414682, + -0.6403257989649065, + -0.34676209274980263, + 0.6518174417400077, + 0.041047707742685846, + -0.19161578362922482, + -0.3473917047553917, + -0.8712490125687881, + -0.6474445000690167, + 0.30704209883158684, + 0.40650355635854807, + -0.11443176810412103, + -0.5902100206759611, + 0.15130704599200306, + 0.17817282405239931, + -0.4319867595428307, + 0.3761037148942029, + -0.5836163992288743, + -0.060841719494298174, + -0.4704848100986995, + -0.114387030520533, + -0.11861116674088701, + -0.5393455298584737, + 0.4504255225187296, + -0.5808023955276755, + 0.5382270931416498, + 0.11679290322936287, + -0.2503809338557711, + -0.801615896461292, + -0.45611709532077055, + -0.45867457314654514, + -0.8519137782655727, + -0.2565781535722065, + 0.274534684228782, + -0.6458491174905114, + 0.20159885534527955, + 0.39734630548494343, + -0.2838925864874252, + -0.3030274386188907, + 0.29310849318668664, + -0.3930756756419413, + -0.7128775548145456, + -0.02633510108647996, + -0.037201389877182356, + 0.6491364028892762, + 0.3469588703999603, + -0.5217122728699541, + -0.19917046329456167, + -0.3349666353477587, + -0.01162237908983721, + 0.314749354310805, + -0.17874098931066063, + 0.4115489047371538, + -0.26163559973755857, + -0.3919508242771738, + 0.24996503869006392, + -0.027192513641731697, + -0.3168900777190604, + -0.1586176417895574, + 0.3261781642801057, + 0.5796439395266363, + -0.5848152040109578, + -0.029844147240536634, + 0.6776237433109801, + -0.32377406311316625, + -0.7635571386974587, + -0.6902063158019462, + -0.6990581444492172, + -0.5677659933995398, + 0.5735700934287337, + -0.3213381131603822, + 0.18027084925260473, + -0.09478259380341014, + -0.7273983262954175, + -0.7001828885122763, + -0.6187034326214707, + 0.3826398925025466, + 0.43489271128727547, + -0.06374368187858659, + 0.16281770668399587, + -0.5128811376418514, + 0.5328912076677778, + -0.696797471603485, + -0.8139534828632933, + 0.5584134609133441, + 0.11558499547814316, + 0.27470742399416703, + -0.818352202075237, + -0.4979590879757463, + 0.07651840517657993, + -0.07154745161049558, + -0.0757372535283084, + 0.47710431723598956, + 0.09806765973650233, + 0.42608932847965575, + 0.40262010155470807, + 0.13463196832382673, + 0.30425343522295567, + -0.14954529374980108, + -0.4508294504653402, + -0.7734902010591478, + 0.4914209778693729, + -0.13667078460018012, + -0.33186796044526023, + -0.15867744689409924, + 0.4807755293326793, + -0.06507713560278428, + -0.3136508774787182, + -0.7877245060868477, + 0.14922237514415115, + -0.48726619262815457, + -0.7957635241474985, + -0.4846985195111213, + -0.247358950576134, + -0.1457849050977016, + 0.27985889841417977, + -0.24190118919456316, + -0.8123548411461565, + 0.24224014879767053, + -0.098351596742146, + -0.8689306883715002, + -0.7577803733237759, + -0.3897027044795488, + 0.5262295369360867, + 0.004308591761800429, + -0.5849742697107627, + -0.4654036698660823, + 0.2989707938109504, + -0.7205061328415363, + -0.7367932063143344, + -0.7953767701110582, + -0.3506846367498937, + 0.40480080242016003, + -0.7429911057498992, + 0.03900194071203644, + 0.35412929271023963, + 0.04375697707917081, + -0.3798233027203474, + 0.005488780197852594, + 0.36404801211625826, + -0.868883284614277, + -0.5679411027777095, + -0.010697514001007935, + 0.48337762617327706, + -0.6644152984755904, + -0.8282054802745701, + 0.07563535166537927, + 0.42162221820389345, + -0.12363106034786908, + -0.2020382877710002, + 0.2012209835531179, + -0.6792177548051743, + 0.6147574603768503, + -0.4388300723418587, + -0.0030679562555270268, + -0.3850246687569129, + -0.4801324230328769, + -0.3890459334612738, + -0.322541716949609, + -0.00677437998287056, + -0.810566459536732, + 0.5512162289981536, + -0.5045099788560967, + 0.13967412326021222, + 0.39945188937114773, + -0.817999380591487, + -0.47345731749560394, + -0.321251276682198, + -0.5355720985798125, + 0.4844188789298943, + 0.20528683746248444, + -0.09372494818896604, + -0.7290576893705198, + 0.5539819686712634, + -0.5361550469170071, + -0.7716572912907923, + -0.7016700531312638, + -0.26464212139612797, + -0.6840534272223701, + 0.5306113976708525, + -0.024135222679529278, + -0.7965092622993968, + -0.09696987243231658, + -0.014463855845343487, + 0.3673411543426418, + 0.2502461679422895, + -0.24873499355682116, + 0.11038092015634282, + 0.2835691264935839, + -0.3727487611510961, + 0.2840430454004125, + -0.06083075147139805, + -0.7365167569664356, + -0.4176133416178806, + 0.6646511504267058, + -0.8554072457574442, + -0.21263314287614332, + -0.20507177503856444, + 0.5866847648377295, + 0.3152649232398742, + -0.3183134746841453, + -0.7853290943023093, + 0.3785502227018508, + 0.26213660114265525, + 0.1466016722429403, + -0.2943939443468181, + 0.43127623920977254, + 0.13328438724309388, + -0.0038836911998447743, + -0.6641305884050027, + -0.4649083692352045, + -0.004954874674958476, + -0.6165763184735612, + -0.5685882268450291, + -0.6741767761933755, + -0.49905691562158333, + 0.338288985697781, + 0.37146622788511985, + 0.09886284394166289, + 0.5527950915372771, + -0.6936580427018579, + 0.2446335519305013, + 0.15278786449391146, + 0.10571301106945041, + -0.5939262959914926, + 0.35865009617105936, + 0.35312299954112636, + 0.672186734148578, + -0.4925799671512778, + -0.7030126676381847, + 0.30395002456192655, + -0.21242250356642478, + -0.2924927470609662, + 0.1444040718944276, + -0.0959525628547232, + -0.33450167685625054, + 0.05638765659767042, + 0.6532052472222568, + -0.838713347861875, + -0.5128516857807625, + -0.5488233311344153, + 0.14841571545325427, + 0.45035346363247275, + 0.5080893264781118, + 0.35668227762785454, + 0.007129127273367342, + 0.2587798403314828, + 0.48767830000439594, + -0.7235955173976463, + -0.308669869608562, + 0.3895906452439605, + 0.6202971613124598, + 0.4976652883980689, + 0.1582214273392878, + -0.7378059924516436, + -0.5952468208530441, + 0.057272230286255166, + -0.6866565103376003, + -0.6362766615842881, + 0.003613839228647775, + 0.4391909727693356, + 0.12443269621862252, + 0.08867613529965679, + -0.6321585633058063, + 0.07849347158435727, + -0.18501966657123103, + 0.31687302472126133, + -0.6492003383133447, + 0.3628850049649194, + 0.03950587751942103, + 0.02380992230996759, + -0.11395755793914286, + 0.05927865336057203, + 0.6563316345762503, + 0.6608565445151043, + -0.7296468047291439, + -0.1674520995970875, + -0.18643789513377607, + 0.07182467939546266, + 0.07659851841148158, + 0.47393235937104705, + 0.475169080135985, + -0.7931430903085271, + -0.47991494898497944, + 0.06368140195811522, + -0.14897249096754706, + -0.7327674186393174, + -0.39858467624335403, + -0.8649769100122217, + 0.2738822245522673, + 0.6393159599842367, + -0.39904852957470344, + -0.567854127710888, + -0.8378099938825434, + -0.5352516063091523, + 0.16421123234789736, + -0.8110961540113661, + -0.28021218675358506, + -0.03310543045462633, + -0.805326458259173, + -0.2005753757828821, + -0.05024190785089189, + -0.7455981247558594, + -0.3207624684857142, + 0.317830590467889, + 0.15031850522987955, + -0.8516203871262826, + -0.10411506622844258, + 0.5728075261386271, + -0.4332535765026046, + 0.3062453499965082, + -0.5630543349440429, + -0.42773223437334684, + 0.031668998339436705, + -0.731814737914162, + -0.24654130215279801, + -0.4104769052398364, + 0.6680020683766118, + 0.18935185317391234, + -0.6495441554071782, + -0.5788222571460122, + 0.5217714700215207, + 0.45113863135476084, + 0.470738933202992, + -0.018008273422736698, + 0.07477747252615852, + -0.8465481475795866, + 0.6806041779524569, + 0.2624086101210489, + 0.38090949665411744, + 0.5839811519001604, + 0.47322227341894674, + -0.459972922760751, + 0.21496766462807593, + -0.10890244132227489, + -0.8621595046499289, + 0.4276204928710755, + -0.4765839747178407, + 0.29094332302941817, + 0.4870174459734894, + -0.6896376408818339, + -0.4839264802438931, + -0.07754047377195206, + 0.24875411525518765, + -0.005581163205594986, + -0.7737732292848877, + -0.8556256379931827, + -0.5279982412403534, + -0.16862803377619207, + -0.5047622939908627, + 0.4095901253806363, + 0.1246134397813018, + 0.1165948598781208, + -0.4623237116261544, + -0.6034055404443166, + 0.13643783349319005, + -0.4175763715143793, + -0.13954572833948042, + -0.5397986119258984, + 0.6068878262933471, + 0.23438713688766988, + 0.2691130561906977, + -0.7348349791312754, + -0.5453757941060855, + 0.6428889268188703, + -0.17711072930431093, + -0.26679599213824656, + -0.6623819518719128, + 0.11944139924773389, + 0.4683013435079316, + -0.7761772538421639, + 0.5772786149794188, + -0.562353518974245, + -0.6112493093390934, + -0.027588129672320827, + 0.44610468926314695, + -0.6179321989321117, + -0.22898912019308304, + -0.5419559761930498, + 0.579599960840785, + -0.70759212634978, + -0.2545037781142422, + -0.1435764566700568, + -0.39149565201628816, + -0.13977423080829532, + -0.8553045507507594, + 0.015775772003931654, + 0.4497670622061337, + -0.6856592907999108, + -0.22619364587520185, + 0.5024667299338809, + 0.5780266970128939, + -0.6627910375424367, + -0.011125665452432987, + 0.22467516606045346, + 0.11074818900313788, + 0.22627850980182906, + -0.6812972163615906, + -0.6197671110700931, + 0.11717628251177392, + -0.557800228604957, + 0.21816973269080153, + -0.006972957737124252, + 0.01816414145256373, + -0.4316257032305805, + -0.4619856965505849, + 0.1656732922569487, + 0.3742419199953432, + -0.8265260787175118, + -0.7442038636858626, + -0.1877913558164297, + -0.5133631566765566, + 0.5879517308170784, + 0.6653688720667411, + -0.35591782118920623, + -0.05474569267913487, + -0.7444398594656648, + -0.2821070785233556, + -0.1500171368243184, + 0.5588645533961333, + 0.5711755381133882, + -0.3091085923248228, + -0.5550995822072615, + 0.5140889528438267, + -0.43118873835230087, + -0.44288199457466515, + -0.8649508879420775, + -0.5491772568500661, + -0.7267732202098828, + 0.19976833036576214, + -0.6167007715596277, + -0.6712432443932066, + 0.6768494618852597, + 0.22042593199123195, + -0.6723746946489729, + -0.28218743624806786, + 0.3320179491523053, + -0.7933011897737638, + 0.22119513933242996, + -0.3202425272185333, + -0.5039712231799689, + -0.8437961327212962, + 0.6791919898340434, + -0.5397502504341416, + 0.25558913576168074, + 0.5720376298245448, + -0.5352523592361962, + 0.29835693551829856, + -0.31374136591791, + 0.4784480842018447, + 0.6338590854684117, + -0.4626930890557515, + 0.657225647286014, + 0.48857656143065975, + 0.09555827684952334, + -0.06736966916435239, + 0.505047890573444, + 0.33593509170431657, + -0.07668686034768368, + -0.020835426467784246, + -0.6990248253290716, + -0.7180260161360181, + 0.3245291140961527, + 0.5787542234415916, + 0.35926796982735854, + -0.3764833710607403, + -0.19683690011616517, + -0.7519104752112677, + 0.41632738460323193, + -0.25717762780829545, + 0.11748017528253674, + 0.5515685263119353, + -0.8215027300356716, + -0.6480585021454159, + 0.23211442562003926, + -0.7250910593166925, + 0.15305460007166116, + 0.6793973840953552, + -0.28582120815431644, + -0.2662656508603307, + 0.620178656621874, + 0.2599645406969583, + 0.3721590505551974, + -0.6157915495690823, + 0.6053138905676639, + -0.35631974336799754, + 0.156991324013544, + -0.48324274767004993, + 0.12638636025680405, + 0.6592357533231631, + 0.6570642980659712, + 0.02218030299261642, + -0.38974756229560126, + 0.17551251391237443, + 0.3384884566734866, + -0.3582458106332116, + 0.6135129474622544, + -0.39875596347323894, + 0.07194913648306767, + -0.43586949795342017, + 0.2964181440069472, + -0.7510444604525071, + 0.20182397746452396, + 0.15860078614777995, + -0.8010515946501922, + 0.3104905867793236, + -0.5708758556337606, + -0.18959525918744513, + -0.2650040794908599, + 0.4548912484354849, + -0.047720964773216856, + -0.1684578436480645, + 0.6016500330021316, + 0.6699347281465601, + -0.0700704052340757, + -0.07339652950429665, + -0.5637203727050928, + -0.46048505213710966, + 0.26463895007918115, + 0.14339572893869568, + -0.3939271689924202, + -0.13176518794654357, + -0.34184008992012693, + -0.4606843638149725, + -0.674092346693738, + -0.5878477844703266, + 0.3573657489590284, + -0.0517251908674633, + 0.654185266628888, + -0.0639825285438107, + -0.5421667116491986, + 0.2602492506586035, + -0.2922279011878154, + -0.2057696665355162, + -0.6977667935363101, + 0.008385579701338464, + 0.2451864296596339, + -0.7885753760906083, + 0.19809775373335492, + -0.599806923224908, + -0.33230452762212825, + -0.386896793390091, + -0.3961289846140635, + 0.18073312674644637, + 0.17074040642161592, + 0.6037086898763332, + 0.2608107260333531, + 0.37649477021735633, + -0.22945196698238202, + -0.4490160952703499, + -0.13098091012760982, + -0.8413649382259557, + -0.7845975768329936, + -0.14193586023870142, + 0.00810915814911728, + 0.2421702114198011, + -0.03844809396708726, + 0.11409153038369557, + -0.41041297565694596, + 0.6666451435517758, + -0.25913734717289794, + -0.28046718601768916, + -0.5144582576327945, + -0.7635190600730664, + -0.8069543734175585, + 0.4106454724960674, + -0.2894144750639287, + -0.1262261954148748, + 0.33765787910666456, + -0.7931039879006432, + -0.3024476172693995, + -0.6839200011527966, + -0.07259210667466276, + 0.29757697424082774, + 0.21318807283936925, + 0.5729609260150786, + -0.6736914205144258, + -0.10631982803821427, + 0.007640092414996413, + 0.3328067233702833, + 0.29058352113117614, + -0.8290996940355331, + 0.4631819820847566, + -0.2789458121060655, + 0.30145380562388546, + 0.3340117379777253, + -0.1596375475528462, + 0.44117654105978155, + 0.02955578990860941, + -0.1332324429679329, + 0.5687512182709943, + 0.46167409514979874, + -0.4687730795646092, + 0.5206965464919192, + -0.24563112041944157, + -0.6660917909156544, + 0.20376370437178604, + 0.6073252957824234, + -0.1519093173175463, + -0.17983288210060677, + -0.21650851710979002, + 0.5241279981581967, + -0.7912683426323833, + 0.08839480826712598, + -0.5818021674731635, + -0.712216344972617, + 0.5689525344320338, + -0.8053270922699723, + 0.657094491368294, + 0.6191614440816747, + -0.4832379182250948, + -0.6048577926237153, + -0.539871237000956, + -0.24738720623296429, + -0.6270442467654633, + -0.33799177320591056, + -0.1541370306127522, + 0.42880651038323603, + -0.3741232014367429, + -0.722955148266765, + -0.5673709464190657, + -0.40334680648687327, + 0.32688376036180744, + 0.05667623480363082, + 0.07608345992930943, + 0.6154897058684065, + 0.3287519156339903, + -0.826131620873227, + -0.6570283496731554, + -0.6065449230120938, + 0.015183113464200426, + -0.548049502132973, + -0.6245495094607623, + -0.16975248226298467, + 0.06697093943107346, + 0.4783701308921916, + -0.17587394415364843, + 0.5608074523458345, + 0.25325881981227905, + -0.798890542696443, + 0.42916245248692786, + -0.5713031263639381, + 0.12372597577251654, + -0.06992039708839237, + 0.24203017353025558, + -0.31184354064276054, + -0.041508271409379516, + -0.46948386582541096, + 0.5035937503870825, + 0.6843277500979891, + 0.04245674391732923, + -0.041432537989605, + -0.10860649087715168, + -0.5232574811308759, + -0.6172655217365255, + 0.5409767343571724, + 0.2577613816438119, + -0.7767337502260936, + 0.10538417997255622, + 0.2179337715946198, + -0.12097359671616403, + 0.2866817232394999, + 0.3078941031972019, + 0.4233363474296771, + -0.8070993845105207, + 0.23652428526309166, + -0.03248515314231104, + -0.3680166796762476, + -0.11531704041003077, + -0.6419273092029035, + -0.4005045107558087, + 0.30556710511793084, + -0.10468053804016353, + 0.41808698449694226, + -0.5847571607507447, + -0.22737612474673852, + 0.12498114758426448, + 0.2042586485320511, + -0.4332141989060744, + 0.675509167375761, + -0.29882019499907353, + 0.3299532217624793, + -0.4668899359183519, + -0.3633974374829322, + -0.2647712830933975, + -0.21866185770990854, + -0.8265593602076993, + 0.20609178783411275, + 0.15470440000110963, + -0.21107755318381338, + 0.5168787727740066, + -0.5176501214250622, + -0.587255921105668, + 0.2193209825895831, + 0.31601555515314217, + 0.3919727733714643, + 0.23751351895594797, + -0.5245358147078243, + -0.5752196292934826, + 0.07748745272382351, + -0.37492619751868095, + -0.4387704540695876, + -0.6114755994728944, + -0.26725348140506067, + 0.3596750189283958, + 0.28547744684270515, + 0.21926152087455264, + 0.0828134471974048, + -0.2508035785406344, + -0.22647316457803113, + 0.2004024699036452, + 0.3321601394875585, + -0.564674340445735, + -0.5380674775613876, + 0.4002972476707046, + -0.4066167378475618, + 0.13010208107790067, + 0.13154803055679587, + 0.01070611786287845, + 0.1631621814632872, + -0.8624118530738634, + 0.10180934967233823, + 0.6311062326421649, + 0.6348763192807202, + -0.3268243883785359, + 0.22912241401757105, + -0.3620037196572873, + -0.5500606910166767, + -0.765296643237885, + -0.5122505858177415, + 0.33059972735814414, + 0.4680214257901568, + 0.3711711116145785, + 0.3006540601148041, + 0.3280769060657861, + -0.22770543909188234, + -0.38181925487700374, + 0.16328128651949003, + -0.4055520042252994, + -0.30833810121556005, + 0.24467668870206516, + -0.8242223330631173, + -0.5955213497631442, + 0.028388200807944464, + 0.3983458108167376, + 0.16051993714199753, + 0.4080046518084758, + -0.42061612716996905, + -0.2870968286798806, + -0.5539259142256007, + -0.12288928367766472, + 0.5921020861817233, + 0.13615129620948718, + 0.2818532536776094, + -0.3057796130123429, + 0.14945578735313758, + -0.5791344708082324, + -0.7627236611965591, + 0.27770155184367706, + -0.394727672780881, + 0.0565517027052207, + 0.6848144420114112, + -0.22160124149667337, + 0.46749440217214666, + -0.23732633207188147, + -0.08591421848026626, + 0.03452308972917373, + 0.25716911883852045, + 0.33320519602233534, + -0.07948455664264809, + 0.1603342242739888, + 0.5938318003887558, + -0.2781476332356788, + -0.4581348761112876, + -0.6576082103034978, + -0.23676839310266407, + -0.3113345524999158, + -0.40689310326807854, + -0.12515815259893137, + 0.3558913515632597, + 0.15178701101133674, + -0.0734864509199743, + 0.3186570135166812, + -0.20237615857852942, + -0.4364593003692408, + 0.48820580440827543, + 0.07328320602275129, + 0.048654332217310636, + 0.4202679412374005, + 0.535282326064289, + -0.816872048235382, + 0.547929104231864, + -0.4216549861822491, + 0.28304373582489084, + -0.6625866776673855, + -0.1759416338816604, + 0.2904875939705166, + -0.35280491651173596, + 0.6724113980770355, + -0.5906578247583658, + -0.4621839820834452, + -0.7099359620807886, + -0.30443439731868727, + 0.20462479630226216, + -0.7834284478083047, + -0.1351463778652252, + -0.37379575622475975, + 0.2339389448973851, + -0.5944392538200634, + 0.17613530216377737, + -0.5981635668270875, + 0.549024352232078, + -0.6440176999654783, + 0.6265966162295379, + 0.3066234666972917, + 0.28154177820625337, + -0.3189320915663749, + -0.11081742415197005, + 0.49623831703611254, + -0.25117581221371, + 0.2208515104322929, + 0.2562687343314193, + 0.06692605744552516, + 0.6738630068618455, + -0.4094136828733374, + 0.3191723517860795, + -0.7184392856543781, + 0.06705772029244639, + -0.777581346211635, + -0.4142478812641078, + -0.6760853279689931, + 0.1301106742176329, + -0.38554852209386464, + 0.4156722285166198, + -0.6997629041473211, + -0.22415312432306433, + -0.1068312347502729, + -0.7500583789415296, + 0.31685951103935783, + 0.3570521003536512, + -0.5966665072580462, + 0.561731051511151, + -0.025434883830634636, + -0.8038148080269767, + 0.1439414723471989, + 0.10371198158751771, + -0.4626879154921461, + 0.48300576595617517, + 0.45042739677643373, + 0.5189747974346745, + 0.383081235291881, + -0.6113218357174107, + 0.1207983938660594, + -0.21063557547392175, + -0.15070054871098548, + -0.6887134832955769, + 0.3842547657452179, + -0.3929318037562234, + -0.7362937740922016, + -0.03607220191333116, + -0.4362400832651674, + -0.3854310125832294, + 0.2546515899588363, + -0.276828967944292, + 0.4302110389040984, + -0.7892429503994121, + 0.5535501415976934, + 0.6663673071727331, + -0.6246381892267578, + -0.5747921848579897, + 0.3659838541259318, + -0.35818701140855735, + 0.27231942828698086, + -0.026901654747470416, + 0.24564306749089815, + 0.42501387606408436, + -0.6815611976050124, + 0.6255851758375276, + 0.18003807200322453, + -0.3650921276150654, + 0.6433928541078108, + 0.14287011180880727, + 0.1031004835449193, + -0.4793323747828982, + -0.712617435507023, + 0.6537592808129448, + 0.28404215586002624, + 0.12573857278941825, + 0.1615270744762466, + -0.5971389944830708, + 0.3379390350578252, + -0.18284477467586135, + -0.7216621648592533, + -0.3669250857752868, + 0.5548720683450282, + 0.6178921443247541, + 0.466231911967827, + -0.8198180321098045, + -0.35406537598655896, + -0.7445978425973491, + 0.5238977191431927, + -0.23064436283804501, + 0.22970025906709368, + -0.8380151589642842, + -0.1679567947115802, + 0.2464475781623524, + 0.5624885382159336, + -0.678834621065167, + 0.3488271516588096, + -0.7375790066182528, + 0.4814298547184169, + -0.5987875325087051, + -0.8507865710980913, + 0.6411829965053563, + -0.14190996453645233, + -0.756572229885417, + 0.5536662468334125, + 0.2559554342103888, + 0.2642476658041192, + 0.5298794148912706, + -0.6956429578574996, + -0.2054726384715274, + 0.14327296055059235, + 0.3410726918241501, + 0.1695984532004403, + -0.3557034945003251, + 0.38915824250002784, + -0.42406396682883823, + -0.6618911401638076, + -0.8016240347292386, + -0.2170751160995411, + 0.4131810109766746, + -0.14438832109157484, + 0.32168974786484916, + -0.006361788448420835, + -0.03151674517988645, + 0.07898509075036286, + 0.6243115902915831, + -0.049930067177622606, + -0.216104095331914, + 0.22391132400210434, + 0.35897899862290494, + 0.5650851612578783, + 0.3494986666984833, + 0.49804217707122855, + 0.17966633513855046, + 0.5069478903107844, + 0.14486349395399178, + -0.8015329191559892, + 0.1494938805546865, + -0.35178271729811894, + 0.5228616808823846, + -0.10790719434210339, + -0.24935850763819978, + 0.3203615475485545, + -0.0285408353790898, + -0.2589968491863357, + 0.4200268484948694, + -0.30568903234494016, + 0.32891439915158494, + 0.35812194606222725, + -0.20038886795026312, + -0.24842118886939923, + -0.14694751440122833, + 0.562656382656226, + 0.049352059925559244, + 0.5487526458638176, + -0.6749958074986693, + -0.5704441206753048, + -0.7749244644790438, + -0.13193312825494896, + 0.593268023982111, + -0.6657926667146816, + 0.18258896704790628, + -0.5191348933783894, + 0.2817267978245871, + -0.21157124209155598, + 0.2973824428762081, + 0.3548154374913789, + -0.5722969472099335, + -0.49052615352162016, + -0.3298893027596471, + -0.5986001949357141, + -0.6441879114956179, + -0.18780594687859575, + 0.08091935124157146, + -0.12331263431475037, + 0.29192447713236425, + -0.10229969715677067, + -0.43599240010651036, + -0.49912032660637673, + 0.0718181937767639, + 0.16917764317878714, + -0.3788215348750181, + 0.4446096351409733, + -0.4032695950156712, + -0.6192119374021878, + -0.6295617931153313, + 0.3323952946270864, + -0.1042005105927376, + -0.05953615217886776, + -0.14467863101103517, + -0.3774075166995485, + 0.24077415899652388, + 0.10023456990309532, + 0.03003904508803512, + 0.33677305210448016, + 0.34593373936896266, + 0.4665029850246444, + 0.5790474880405411, + -0.6674595779926955, + -0.22795395288965004, + 0.34021825509983017, + 0.2782761241732462, + -0.0957762526585072, + 0.6755404530372214, + 0.2958768772632826, + -0.23219697083620994, + 0.13311708446873138, + -0.6987093616574874, + 0.6507914319191962, + 0.4395424455957816, + -0.7579227701164679, + -0.04570855019721831, + 0.14774166021612556, + -0.5690482512460613, + -0.3637598893250177, + -0.7989856120587878, + -0.8259616937846759, + 0.1273932247773123, + -0.45168997046579384, + -0.0908906522535542, + -0.46716109123008015, + -0.40901267199287933, + -0.025876647139788544, + 0.6660365036216161, + -0.1519131278098984, + 0.42901801038872633, + -0.21017885757698296, + -0.25875977219436697, + 0.18128773694908762, + 0.4678586367441452, + -0.46237849481291937, + 0.26581593599204967, + -0.31622583083801525, + -0.003746745021409592, + -0.5388762587617912, + 0.15105061175598722, + -0.04124573810188459, + 0.6092078602107173, + -0.6653510284287125, + -0.296724321123096, + -0.696206428418596, + 0.04205326348198768, + -0.4057284292801064, + -0.5126142210746807, + -0.6889435245733283, + 0.17678144501041493, + -0.10425193549957967, + -0.3167445413308544, + -0.8407173342625784, + -0.024472505206598716, + 0.6327207375189955, + -0.7935950639013504, + -0.8489084369198729, + 0.48188239299652047, + -0.0888842644665585, + 0.4058970537934642, + 0.4488867980338106, + -0.12542694482305083, + -0.4363631538726049, + -0.5459445470238447, + -0.3637811783441147, + -0.5763856130135434, + 0.09779848310868333, + -0.5618834360365675, + -0.6764221773001464, + -0.2036718526492617, + 0.31162673028351306, + 0.18553644946708714, + 0.06395333788582092, + -0.6473499188960987, + -0.1889571459911924, + -0.4415135767670429, + -0.6856527871559297, + 0.12842638722021205, + 0.5698163668380224, + -0.6489885057665468, + 0.20098959828468665, + 0.21752225324746666, + 0.6178000902771551, + 0.6537900428097306, + -0.08842934237046796, + 0.46515813845719156, + -0.6031303834242363, + 0.48471578794636405, + 0.2870576947311717, + -0.6279730518153261, + -0.7052899083266313, + 0.37232051948683276, + 0.30655444422383515, + -0.7936204474638227, + 0.03772979029627366, + -0.4951263169285505, + -0.7144410577574327, + -0.4664562456007798, + 0.6691304904896066, + -0.2822487876254004, + 0.3916514062081303, + -0.4788405010963781, + 0.6623071046155936, + 0.4659628520694926, + -0.37935943109734244, + 0.4113096360856151, + -0.5436258056373462, + 0.12461364859186275, + 0.6127645273998946, + 0.5526875791393789, + -0.6826244258592814, + -0.07482031010095458, + -0.07528565092536033, + 0.03615489414617268, + -0.2169690878852355, + -0.30974137151924375, + -0.2803956084031344, + -0.5484318403804377, + 0.14056501895135687, + -0.677245488478427, + 0.617816825729654, + -0.5204020605948504, + 0.5207139561179442, + -0.7016207225528394, + 0.07066370784097353, + -0.6433584118982827, + 0.12823655707411896, + -0.567856168965482, + -0.2547873078292616, + -0.6687505947033038, + -0.3751284197021626, + -0.31119692718537195, + -0.7366313766199103, + -0.8064592062299634, + -0.7647596935322689, + 0.07791083779227981, + -0.43051647556501277, + 0.2703307307112791, + 0.2677961627856139, + 0.3052529609629445, + -0.7995808982719803, + -0.6268562353465336, + 0.6807602862011805, + 0.6048176111188454, + 0.05352300062662696, + 0.5366853260516397, + 0.04243593219449737, + 0.533560127145236, + 0.40681143395314645, + -0.050086477191259915, + -0.8591578669353234, + 0.1923892251351299, + -0.7725936205864113, + -0.36425613653623157, + -0.811766760268636, + -0.2896262137143929, + -0.6761860650748794, + 0.6114756350495568, + 0.6498840565607192, + -0.7677699121716843, + -0.5734947407708137, + -0.027430355458529787, + 0.14616290908835416, + -0.26141426865757034, + -0.04158861831767924, + -0.310026965066987, + 0.25315929558086714, + -0.3464948002200713, + -0.42359423356689574, + -0.22527574580278698, + -0.07350667084979479, + 0.45748237882370557, + 0.17317813674481186, + -0.6025756097793422, + -0.7083578084126864, + 0.2903262036200246, + 0.5160575672865421, + -0.2774085033361844, + -0.508906885600292, + -0.025932279495308075, + 0.6502582956535256, + -0.5141785414450019, + -0.7079630178262266, + 0.24735368138557934, + 0.3817190458461531, + -0.5996690782221925, + -0.4596826221964821, + -0.5795977843151698, + 0.639626875664321, + 0.29241188687072717, + -0.23287581053896378, + 0.6490948925404626, + -0.049700885287069285, + -0.03742529799779848, + 0.3131424923994942, + -0.828925097125076, + 0.5784421516937389, + 0.508883197333632, + 0.3272298563631716, + 0.6768300496165683, + -0.10403872732237052, + -0.7752149585367597, + -0.6587347339541793, + 0.5772430290248972, + 0.3963192818949549, + -0.29443776046768666, + 0.23579541285257932, + -0.5248915620161934, + -0.05856342342693732, + -0.5265916549870059, + 0.6175484149285951, + -0.20463650179466364, + -0.689896794980475, + -0.21385326551568784, + -0.18727497013938676, + -0.493099651352161, + -0.7440220997384596, + -0.6465747546167826, + -0.4234994933016237, + -0.12802156753271354, + 0.4998017799953268, + 0.28839214577399475, + 0.20986813749949118, + 0.12704987018070957, + -0.7163856574644129, + 0.32945752408787266, + 0.3613673699633725, + 0.42877686259327585, + -0.26905712129213943, + 0.6406704249917768, + 0.0518714635127866, + 0.17209303629400774, + -0.5650343844657144, + -0.7014184049315296, + -0.7234741178804937, + 0.5720095695594308, + -0.3601366866447274, + -0.13094527640501608, + -0.5217752506973127, + -0.3511364739362739, + -0.5993214723791234, + 0.2424120622913145, + -0.05464095865985952, + -0.033697779316474996, + 0.1661074561115815, + 0.23375010231860383, + -0.5838585796173974, + 0.0525466203239664, + -0.35585989511209815, + -0.4647194045155413, + -0.7836246937636013, + -0.5034609678177424, + -0.6234878079485769, + -0.052543616005033655, + -0.4338004557561288, + 0.048486610096675764, + 0.43461698392128867, + 0.46204666868734534, + -0.515943794321469, + 0.544956681820229, + -0.11985086449925586, + 0.4459562999167025, + 0.14706325281701804, + -0.8536533402576596, + -0.2893598785648066, + -0.6235579450592998, + -0.816099251589642, + -0.800062301886361, + -0.8605157699728565, + -0.5592254544799815, + 0.3671222399726849, + -0.040503901552198185, + -0.7719014809656713, + -0.1757007129601026, + 0.29192284926830203, + 0.048892987896678175, + -0.38329144191704084, + -0.2429169313250099, + 0.25049842595831284, + 0.15850382995711676, + 0.5934125026107407, + 0.23518902997570634, + 0.666329716773368, + -0.4428174766290479, + -0.7147515941041592, + -0.2500605128606975, + 0.33987096325188004, + 0.13806290473433547, + 0.058387165598234425, + -0.0923065567208936, + -0.8503197987413875, + 0.5756028586903782, + 0.633071550148287, + -0.5465932077436955, + -0.6806860266943833, + -0.7532134113920974, + -0.2822840371555063, + -0.1128677462946247, + -0.6731288192077652, + 0.12693052671125737, + 0.4511904227464215, + -0.7128352730545252, + 0.5323962591987487, + -0.6166479354364767, + 0.02150661756881289, + -0.17105482064798117, + -0.0013576410378461912, + -0.7123757891475493, + 0.3669666518039748, + 0.673559855351399, + 0.4820955005090245, + 0.06964237195994627, + -0.5586028455398941, + 0.6489934703105976, + 0.2894274335602839, + -0.3964197561996548, + 0.39646235421405385, + -0.04456846547888815, + 0.26934434559866627, + 0.0594164180335901, + -0.10456361132216896, + 0.3749058708793166, + -0.4227805788514967, + 0.13847444777906237, + -5.580807324565562E-4, + 0.6438311768265027, + -0.32005886219419644, + 0.05531361304558413, + -0.669036587561233, + 0.4012480899736036, + -0.43033514607740964, + -0.1975444377408624, + -0.7520407079780933, + -0.01312455264396839, + -0.8071340007855787, + 0.40378283435939755, + -0.015418094839988239, + 0.07934541054413857, + 0.5325894025774044, + 0.1282713501101701, + -0.0729211105148524, + 0.4941381827024057, + 0.3692739113546796, + -0.7538667901306115, + 0.361270343916145, + -0.31044068151773363, + 0.11676871407737388, + -0.05615269213557594, + 0.487550548714378, + -0.5471105108737455, + -0.6281586332218975, + 0.31178320184856545, + 0.4271534647008354, + -0.49379836546720873, + -0.531953206694894, + -0.26886869227830734, + 0.4526138949486499, + -0.40100746640941065, + -0.029247423037323306, + 0.4028942424218377, + 0.5476399621319344, + -0.7779576428215672, + 0.5189737567664184, + 0.42360193808589697, + -0.5123696350563287, + -0.33519650376248644, + -0.03988636747731711, + -0.799842366684112, + -0.07203517053820185, + 0.5804329786703036, + 0.4093075911998446, + 0.6521102957176058, + -0.12037651971312091, + -0.5837242076302873, + -0.7018214957981501, + 0.6453334166061094, + -0.2910174175170612, + -0.7062938269759361, + -0.2073279213212179, + -0.8404829891139243, + -0.6617438840809134, + 0.1137769047715863, + -0.5312065240989371, + -0.5982016457831705, + -0.1424078086229762, + -0.8664731520898663, + 0.39864428501377447, + -0.2931332091373918, + 0.5486863857824503, + 0.34421517646692024, + -0.07493822773228098, + -0.29318004736744974, + -0.8162425942191148, + -0.6702393536320138, + 0.08635536310214109, + -0.4502558971320245, + -0.6428175393992612, + 0.057664574166626736, + -0.298376301568978, + -0.7267863387813017, + 0.3763521404268494, + 0.18222168601353694, + 0.46984057318706995, + -0.2524536791351907, + -0.006228805677038762, + 0.3788981893598894, + -0.7598528971676228, + -0.6573297041829946, + -0.4763383448954552, + 0.4046027924532022, + -0.28396795746000647, + -0.13844060657025758, + -0.1690605835268345, + 0.1159190111212387, + -0.4076030325222388, + 0.060526070898598294, + -0.2916740958894355, + -0.7290481799118097, + 0.45868917310518287, + -0.32156168888235637, + 0.4034668538957512, + -0.6757180656980404, + 0.4209488614595819, + -0.708630332973292, + 0.1229338815245512, + 0.07275011472034099, + 0.06613573540478423, + -0.6099803651101242, + -0.28109031511688765, + -0.02055923847805774, + -0.6132677169532537, + 0.2336591203104349, + -0.06195186732993763, + -0.560338724594978, + 0.06476245717824558, + 0.2599932767136205, + -0.31730451288913863, + -0.58845817665681, + 0.630833511415987, + 0.5145676070082287, + 0.36530998677487936, + 0.6529795429621673, + 0.0820791632218878, + 0.5244510401805281, + 0.08815340055408827, + -0.5254620762002618, + -0.5438069306710214, + -0.6818165758480638, + -0.6069449418537491, + -0.48205443518696206, + 0.06541255611461294, + 0.3402729999201263, + -0.620366490426216, + -0.7110665459026433, + 0.005882295048585728, + -0.6233786241369148, + 0.5749700788704332, + -0.44571240156093617, + 0.6396412270668438, + 0.6746060451724903, + 0.6300492259500591, + 0.016135372144796323, + -0.3414486499440217, + 0.5928117607671651, + -0.8476391732637734, + -0.801300038766076, + 0.27520001478080036, + 0.48348058491913093, + 0.3172733771650095, + -0.24597703868054344, + 0.4279440642515785, + 0.07649913313748158, + -0.5477832113018494, + -0.326768970024263, + 0.024114257475406076, + -0.21911841853625402, + -0.3545124165981506, + -0.5381946318540607, + 0.47258708840543673, + -0.8151921060823258, + 0.38501197879395976, + -0.04747607894223149, + -0.656945100716162, + -0.44568313067220167, + 0.20534422672872854, + 0.3113406296330562, + 0.20542479322220497, + -0.6433853599991959, + 0.30751271900569843, + -0.8572152958859942, + 0.5682764811783815, + -0.5496902573746114, + -0.7243575686771961, + 0.1458376508434408, + -0.6606208413746733, + -0.44422507886755463, + -0.643488507525492, + 0.20436363936367308, + -0.6890281865678097, + -0.4233669064962545, + 0.1243628488530445, + -0.7117522727994001, + 0.5764470978241781, + -0.34350016674270023, + -0.011741724794935404, + -0.8262810246746202, + -0.7219837066717724, + 0.177433460036437, + -0.3336189842955528, + -0.3310725017554109, + -0.7502457442083454, + 0.11387720278434776, + -0.6807962397810732, + -0.7808333339564588, + -0.7910200657910966, + -0.31107328959376157, + -0.17112441177068782, + -0.2816735654200694, + -0.8627125497830387, + -0.01902732639960303, + -0.5340846072196958, + 0.4750821532215782, + 0.1383372049631385, + 0.33032364012767046, + -0.6259650305920886, + 0.1339870230469956, + -0.015299439076993715, + 0.30467596486576387, + -0.39495305666287894, + 0.6241350087110545, + 0.5862135265841161, + -0.354029731065035, + 0.6823401713535796, + -0.7215443566857014, + -0.5071174160576393, + -0.25650795108367364, + 0.43947445916754024, + -0.022958022258595334, + -0.1372877954217674, + 0.2351183589856879, + 0.682497823770298, + -0.39596522140608414, + 0.3885789548641684, + -0.670513217035057, + 0.19354398243640103, + -0.8646097978352754, + 0.15414557126109363, + 0.4169594272631204, + -0.8114975734761773, + -0.06005850395768886, + -0.44077760543008704, + 0.025840675265671686, + 0.05812869255974684, + -0.24224827136994798, + -0.38708665409045595, + -0.6251175669930782, + 0.5484534453934929, + 0.41806391503198903, + -0.7307486056204098, + -0.17029212271733785, + -0.5707095775504634, + 0.02067354757456019, + -0.1099068297506941, + -0.18472930610309946, + 0.33015841821220737, + -0.6097471356882936, + -0.1208807932291881, + -0.09652140816619559, + 0.24071170368908235, + -0.04322373819678216, + -0.502012833380926, + 0.6128923205953772, + 0.46934026322542255, + 0.4545390338808063, + -0.7185700775814019, + -0.2351893571732705, + 0.1648056837561348, + 0.26053376878196943, + -0.44001488387508975, + 0.5623599165449792, + 0.09241052362530067, + -0.8569383353608047, + -0.6665414490776813, + 0.11446896904765069, + 0.32538453244161236, + -0.12711621099385917, + -0.6325847654198571, + 0.11963135457447349, + -0.08696192887285914, + 0.40102563157458293, + 0.11403198712809781, + 0.49712632520891564, + 0.2516218702305951, + 0.11847439277020899, + 0.22225869824817635, + -0.5846450917208741, + -0.46212220953212385, + -0.608289672954613, + -0.4897253678387544, + -0.660973431421433, + 0.4038416582550933, + 0.40152331510997563, + -0.37245841349311654, + -0.406961560586933, + -0.745619968713618, + 0.5334372921542455, + 0.5161494646613048, + 0.4931479025141917, + -0.7887421689480658, + 0.04631505051507423, + -0.38424502869901367, + 0.19282072254764804, + -0.4972227217398, + 0.39404963784989644, + 0.07895143467306998, + -0.26196834877523334, + -0.09590168828043943, + -0.013014309548858627, + 0.10991086459930433, + -0.517003496927787, + -0.0286750035022707, + -0.0406510820094631, + 0.2366086878257162, + -0.8213352887429689, + -0.8397854516010274, + -0.45551777178885094, + 0.4255166719319411, + -0.536304950805397, + -0.7217361300870775, + -0.40086834579166225, + 0.47332554834746465, + -0.6501440384852462, + -0.23026186910617374, + -0.6372575189463044, + 0.6057946890173208, + -0.6835991168853448, + -0.8333888479933645, + 0.08874799507239539, + 0.24669430198647901, + -0.44687464309767755, + 0.5257762526854076, + -0.6590540547802364, + -0.7856718144398545, + -0.5829223775578016, + 0.24514203983704042, + 0.5522516872306441, + 0.05065078898990716, + 0.590579185538377, + -0.37771281007042556, + 0.26164373801410823, + -0.5129394079791125, + -0.10964908840648191, + -0.5319516885909008, + 0.19510061978452786, + 0.6709342518841391, + -0.049939611169475984, + -0.8162058589918157, + -0.8394053935635327, + -0.269173999812528, + -0.3485050396783178, + -0.7258821108603635, + -0.7622352856338478, + 0.6315708671587895, + -0.1596384833618255, + 0.13163000445244422, + 0.4613167261856771, + -0.20927727082728054, + -0.0048120337433598115, + 0.4116498414013302, + 0.2396020777320712, + -0.1254713660960648, + -0.08323384996760275, + 0.3422412440374897, + 0.26726319966262435, + 0.06912793755908264, + 0.02813575588073569, + -0.485185472355187, + -0.5587981468988237, + 0.042870729727164436, + 0.4281744431137723, + 0.14752759192026155, + -0.012726462852192921, + 0.4492156322722257, + -0.8390608612442679, + 0.23412348302735564, + 0.5884031703690601, + 0.6659202019827929, + -0.4802380221466548, + 0.09214137989751325, + 0.24026076794655815, + -0.6983588505996339, + -0.5884792469593922, + -0.5557923689113186, + 0.45982309613708583, + 0.4442651989843004, + -0.5619498302322392, + 0.6509450826933488, + -0.691677742779266, + 0.6004359302311916, + 0.2282173728935596, + -0.696422591373704, + -0.7175360606611814, + -0.509863112024267, + -0.540258004448121, + 0.2699692688648724, + -0.28271965420411804, + 0.4664822771957423, + 0.13144515619851782, + -0.5883159826676299, + 0.31546713481550903, + -0.18287116839675777, + -0.47236009897071557, + -0.03615130795992039, + -0.6432397668024131, + -0.7482106050482369, + 0.6612723257137841, + 0.5771996634244178, + 0.37585503249496466, + 0.15894496918738443, + 0.1402179314820723, + -0.448518223882325, + 0.028443267164176556, + -0.6911196141824504, + 0.6612987097709825, + 0.5793879656675872, + -0.029787578276512572, + -0.09803217998240565, + 0.6121365594663998, + 0.11380739834116915, + -0.08242385719686562, + -0.3350910029583495, + 0.49211946539215423, + 0.549296260710522, + -0.2235965817949329, + -0.7548953179628032, + -0.7475086636243282, + -0.7983577772038346, + -0.48804648811393986, + 0.5831148625672241, + -0.2066026530811047, + -0.5046800795612576, + 0.009090376801748734, + -0.4176916494191058, + -0.828665377633441, + -0.776470178965218, + 0.45380809197409755, + 0.4620776852589844, + -0.535457492783364, + 0.008239235777658283, + -0.7741374919000817, + 0.6209400957150663, + -0.33367312973330676, + 0.6821075303372165, + 0.3539733485170221, + -0.4838458935805039, + -0.6812311848612961, + -0.5753920336781321, + 0.2739287996359848, + 0.23876715886385103, + -0.7590609250081847, + 0.5345478869661381, + -0.1920221833193687, + 0.21863875533158972, + -0.30320883145891864, + -0.2597852280281412, + -0.7566610401766135, + 0.321540801295248, + -0.7330337093052026, + 0.543882809787889, + -0.7669356105219088, + -0.7973122806829225, + 0.10352276902012947, + -0.7766476635131714, + -0.16914285884103353, + 0.23800560678362348, + -0.05023827429140737, + 0.12447056281353452, + 0.4752721818826159, + -0.34036502054198514, + 0.3346892164049119, + -0.039122286030252584, + 0.11800938358837243, + -0.061561916687300156, + -0.5712107757700399, + -0.8506568569778207, + 0.6622514911209575, + -0.048415042472039205, + -0.5592420107414702, + -0.25084384638579404, + -0.597250146774229, + -0.8052128244662459, + 0.15821833555983178, + -0.846114252743969, + 0.5594368281368124, + 0.4289005541272496, + -0.6014589027600676, + -0.45234458104703007, + 0.05967592083705198, + -0.10364370987272031, + 0.11497040455665997, + 0.39010519107971675, + -0.44800766302721623, + -0.5945907223309648, + -0.045540808466504656, + -0.19174855442409056, + -0.20553221961611, + 0.5060003384472914, + -0.49224902389231945, + 0.4448262192326643, + 0.525832120639827, + -0.14589104618609017, + -0.5176621044562599, + -0.022624899471405446, + -0.7520048392040409, + -0.3914430909630252, + -0.4614752650406212, + -0.015713519630522477, + -0.16143139839158882, + -0.05486434861311784, + -0.6710364095576759, + -0.3536342579218615, + -0.6729577866017995, + -0.028176758424362625, + -0.020955638125895737, + -0.0493579228344424, + -0.21416917133356883, + -0.7620682956439507, + 0.058383978145786775, + -0.40130317825129824, + -0.45503296336712656, + -0.7093367985688827, + 0.032293865975555835, + -0.40006812943955233, + -0.5414184585401652, + -0.45698141029461625, + -0.15626983500376246, + 0.009645480737095369, + -0.5195894852671685, + -0.2223376174609345, + 0.0649333019732915, + -0.6165166551090384, + -0.08186788655914656, + -0.7870309512562256, + -0.1270848379161712, + 0.02152429485298979, + -0.7742416690678444, + 0.1087248495848776, + -0.4871325178290515, + -0.508053557380414, + -0.0911422590366423, + -0.7481828801802217, + -0.6220618993883028, + -0.665149983314666, + -0.005978831387447481, + -0.12680218236989116, + -0.23942920377745225, + -0.018636806230244773, + -0.7346686496214786, + 0.04901947047179522, + -0.4705486501778592, + -0.43170796545205, + -0.7881601905528465, + -0.7044233323800092, + 0.1338174977940445, + -0.2928521214061993, + -0.39438768433279653, + -0.6072006110920034, + -0.4586412423032224, + -0.42261869045585426, + -0.4674581045353652, + -0.6516226475969333, + -0.21105915484530446, + 0.049787540804917096, + -0.11715033549454557, + -0.35025403513110315, + -0.41931319881130585, + -0.5964834320155707, + -0.1661694871900654, + -0.013928612527733142, + -0.08852796400150953, + -0.24795210010940794, + -0.6422594271469919, + -0.06588584146419285, + 0.022619153619743315, + 0.0715774552237951, + -0.776011221773874, + -0.16508163235783413, + -0.6439836809874752, + 0.0210454835380125, + -0.6020468036136792, + 0.06317262363030662, + 0.13498567220699753, + -0.5534363869439178, + -0.33708378183077525, + -0.4038354317249013, + -0.4852175962461013, + -0.3219965138060834, + -0.27272908044519195, + -0.09956561679795528, + -0.6814743310731346, + -0.7507670338100835, + 0.016722253529086406, + -0.2774526676125171, + -0.19741849140225476, + -0.46985374794800955, + -0.5803497999908775, + -0.5659675545132268, + 0.1342844753272162, + -0.30586032213943337, + -0.7010016242849136, + -0.09793124139991805, + -0.0770220909183198, + 0.054728300860267254, + -0.33657934427780367, + -0.8050963349524778, + -0.02489614153320996, + -0.42288668943316804, + -0.07785120619860952, + -0.7285542974263786, + 0.025522676471921413, + 0.03418687086377903, + -0.48549406555032176, + -0.08167955448055586, + -0.01136021092504591, + 0.10816921924904288, + -0.6457498948128534, + -0.6661890386243707, + -0.029482722447814913, + -0.40589623012686277, + 0.07533520813213412, + -0.3166267891878056, + -0.007994355883740534, + -0.42111715423259755, + -0.5542296534459905, + -0.03268845392369457, + -0.22134596753160096, + -0.29695428948523206, + -0.14956296911122624, + -0.5474096134292863, + -0.17966006920636401, + -0.7103671708692253, + 0.08626406017256005, + 0.050038778571669495, + -0.2648016002579704, + -0.044595911090080875, + -0.13521206636848115, + -0.7466596522996228, + -0.4468518261430207, + -0.6994752396974038, + -0.08585795333708979, + -0.6642527365158571, + -0.4923483014031934, + -0.10334264963772188, + -0.63388823576754, + -0.6624725792427728, + -0.647843119968194, + -0.011146696017293678, + -0.24667162232499984, + -0.5388314946884702, + -0.44236178646111357, + -0.5552676740869797, + -0.6309787472610932, + -0.7438598110714981, + -0.14150611016917758, + -0.4848242566372724, + 0.09749305613067216, + -0.5985006237851238, + -0.046313223542795545, + -0.08088121835121431, + -0.4988946633743226, + -0.3972778186893126, + -0.132046317450771, + -0.5615468067402778, + -0.7242366286648555, + -0.44501276747307966, + -0.2747447963982321, + -0.13587714577572396, + -0.506509436002018, + -0.25687904604698797, + -0.42803060654437125, + -0.7115543527081217, + -0.6580942455019921, + 0.09261261400305565, + -0.7989145594830743, + 0.1121961062288549, + 0.014379189483136656, + -0.4645462449268312, + 0.014287678082230748, + -0.305442784688582, + -0.7196941485934308, + -0.32118584438828424, + 0.012278835747632333, + -0.5081990213686152, + -0.28308512911684836, + -0.5186478806059455, + -0.4950788707783592, + -0.3331670174312087, + -0.33459515123338013, + -0.7916613849733043, + -0.31977272934844125, + -0.2390871903740005, + 0.134322326592204, + -0.6461231530841395, + -0.6568945368013178, + -0.35455219244407504, + -0.07095993268498646, + -0.5733321975332205, + -0.21705147617792453, + -0.4384452439252861, + -0.5176324786594836, + 0.1360180582739008, + -0.6861465476933304, + -0.5656763604530254, + -0.033548291655357665, + -0.12299431271822525, + 0.10313071788168471, + -0.34348017138252274, + -0.13578534472625226, + -0.18537661574425746, + -0.007637800600441946, + -0.7561716569956759, + -0.21399288192350163, + 0.07869674643498836, + -0.31174680552373, + -0.5585430629800479, + 0.010782090741869421, + 0.09561254652740558, + 0.03849945683084899, + -0.5024125359980256, + -0.06996451074575616, + -0.6765744787862855, + -0.03313772458568254, + -0.40459393757460005, + -0.4628941150902331, + 0.06823298524515942, + -0.7909251367864664, + -0.8116472176941671, + -0.011986045834330494, + -0.40247028117440803, + 0.07153962212034648, + -0.3197749909108508, + 0.03882494325416985, + -0.16869216297356127, + -0.11554477819292674, + -0.2611151836572233, + -0.14522170678442348, + 0.11332925531009319, + -0.21509135653914935, + -0.029555911111546096, + -0.7688906897101005, + -0.404773478394566, + -0.23397601560926318, + -0.8324351627134412, + -0.7260608002227273, + 0.1184990676387978, + -0.49661543734466923, + -0.5052886342378482, + -0.7452892005789579, + -0.454323548852476, + -0.114049695585563, + 0.019975454910369672, + -0.4891604214992296, + -0.4448128585972889, + -0.5717043843035099, + -0.08000419762607391, + -0.3385033778823472, + -0.04301210336523753, + -0.40418098819663223, + -0.3612422333558902, + -0.688514379771467, + -0.2635063972013816, + -0.12811582079728157, + 0.08517564847052761, + -0.06218145931398389, + -0.5582236554290951, + 0.033074718731560426, + -0.6160531258445032, + -0.078103187358323, + -0.5484284415317406, + -0.007559124886735713, + -0.8461555276468128, + -0.2685805666276374, + -0.3335271423756063, + 0.035041364983850465, + -0.24478702566448585, + -0.4791039327499313, + 0.12229641920213541, + -0.16340789906148534, + -0.5499917438031862, + -0.574865850937585, + -0.19097445161184723, + 0.10182983428045422, + -0.14272645896199332, + -0.40823264190713765, + 0.08554303329090196, + -0.23914207264836418, + -0.26550723124334785, + -0.20367357575923473, + 0.008540070122424082, + -0.23327553732501938, + -0.7041221535555008, + -0.6556190236684905, + -0.06580434264475299, + -0.4430509842479578, + -0.4191339055101826, + -0.21653790269057105, + -0.09014658393929742, + -0.21986421608893258, + -0.526142988177055, + -0.6836701915784257, + -0.6157073338977372, + -0.12588614327950298, + -0.08025033235432621, + -0.7172560543113813, + -0.4363067316544825, + -0.28677386335126265, + -0.5861364081322815, + -0.6864552650892959, + -0.19039487278114087, + -0.5721960710557661, + -0.05282989015817596, + -0.11454067568928039, + -0.19403845037990608, + -0.5240716538677721, + -0.6791228229402816, + 0.0770173740409783, + -0.5918189503068791, + -0.7671921801869223, + -0.7567271839728855, + -0.416915274611176, + 0.11305782967795763, + 0.07950568449145612, + -0.21513701787930417, + -0.6515704178326498, + -0.21015135818868813, + -0.6654493607657332, + -0.14771891577393104, + 0.10782530804090218, + -0.5477033254583292, + -0.21138322246988073, + -0.014660509189703963, + -0.3681083291284318, + -0.5502839057980721, + -0.07616810475958302, + -0.4413647786361548, + -0.2917430794289856, + 0.06544240306437998, + -0.0015687990445257816, + -0.7267375273206067, + -0.2993973422300782, + -0.06878804720936904, + -0.04035272016406144, + -0.6801615034038427, + -0.7958009967051815, + -0.11229484623162156, + -0.5691360247729789, + -0.058699078325133214, + 0.12149803351975197, + 0.12883608905380672, + -0.038236720391699786, + -0.5423131416409311, + -0.7846025249938323, + -0.7256656388716477, + 0.07897666040806617, + -0.5941547887926069, + -0.2614379101797589, + -0.598499783671384, + -0.28112401397960174, + 0.051153449740968804, + 0.09038924699159356, + -0.6047372599353189, + -0.0951786475736256, + -0.830689638640589, + -0.8328984457064024, + -0.5937659179358643, + -0.1805682111210365, + -0.3890034825623173, + -0.06590511908792085, + -0.6565452306561426, + -0.09613144533318163, + -0.10782678007166024, + -0.25279483661616464, + -0.5758516524145613, + -0.7092505494199806, + -0.7124837760771343, + -0.5508556350876538, + -0.11913750804401202, + -0.13277309092274514, + -0.5384990617916117, + 0.07512139550576669, + 0.06627022925369275, + 0.12629736229743405, + -0.7752993105855075, + 0.09335612082595035, + -0.5505237852335064, + 0.03303782859558202, + -0.3301355592922969, + -0.5603167355443979, + -0.39260161487917733, + -0.8119299291950126, + -0.5594732796493082, + 0.06673256999026156, + -0.6093440969897981, + -0.40805776788291487, + 0.044754662248890686, + -0.47721227611461464, + 0.14004056931129083, + -0.6738222373480762, + -0.04195872927371014, + -0.33064208680014096, + -0.3700342415383282, + -0.08217655058845696, + -0.39676348939457556, + -0.41950733112214766, + -0.5123666663839683, + -0.5432254631611009, + -0.281019215796495, + -0.372684883743677, + -0.2427230816195497, + -0.2136421947776581, + -0.07729738140254083, + 0.11491852604723019, + -0.19079153869617016, + -0.47237103705094297, + -0.3372945948651669, + -0.1093179472730037, + -0.8408270680161842, + 0.06514966641132625, + -0.4888977863977941, + -0.7127773955854227, + -0.8343986046075597, + 0.12919816088872715, + -0.7207629941466636, + -0.6364610381336628, + 0.033086357541388445, + -0.6518580427657517, + -0.2877302450255962, + -0.09284100127866879, + -0.8015342768654222, + -0.3373975230443119, + -0.16970381045142136, + 0.11147069967135637, + -0.39794399224567883, + -0.20885438363539988, + -0.5706031469436497, + -0.7219159391231479, + 0.06813583459100936, + 0.11209303306717522, + -0.7471374239431067, + -0.5914877980812359, + -0.05830206524546222, + -0.30300502702544085, + -0.2285704872275447, + -0.2586077788187757, + -0.15819159853700615, + 0.03487483472319508, + -0.4209194634547898, + -0.6935779724592233, + -0.5668850790157152, + 0.11885304807841746, + -0.5762898491183638, + 0.14103213454959307, + -0.16032538097640114, + -0.09396729509815949, + -0.5524391601546724, + -0.6929491123077274, + -0.4111172448106601, + -0.5401111614413127, + -0.5749240873444406, + -0.1572433965909661, + -0.5334512399118587, + -0.14869722568727584, + -0.001017077092106744, + -0.36222907668416515, + -0.5208645043902934, + -0.3402741909474991, + -0.20874803668379194, + -0.007147857324040552, + -0.25665590874307653, + -0.0073974203780693415, + -0.4288146092118986, + -0.01742795640991024, + -0.6825174569623027, + -0.6188867543594843, + -0.22107969224613977, + -0.04813436682675876, + -0.331967856823965, + -0.5808463670534296, + 0.03705643010862936, + -0.018883214143807003, + -0.7899542796403901, + -0.8064424420677119, + -0.5545201045371502, + 0.12801425172910386, + -0.37286340914968, + -0.42621218131599514, + -0.036750775911067346, + -0.6440189107891022, + -0.19592888864996105, + -0.0750789719736028, + -0.5325922608825384, + -0.4617833065176449, + 0.01009987223791442, + -0.8168611489086599, + -0.558509054077474, + -0.6584519461911525, + -0.2456494031627996, + -0.42477029982448733, + -0.34831520116655557, + -0.3951159541588604, + -0.21114903291262532, + -0.20232571087530704, + -0.2420623818861869, + -0.4583999328677917, + -0.5554169916717087, + -0.02517975846973486, + -0.788143365605175, + 0.039404418947861175, + -0.21452055396012137, + -0.01810340563339996, + 0.02120869257129676, + -0.0182193707469277, + 0.06988875014457907, + -0.46864583440375257, + -0.4534850613491236, + -0.19376132790548062, + -0.43434712586835394, + -0.5262058950189492, + 0.05490150034601904, + -0.7107149606913684, + -0.4103131932686307, + -0.6279558427969183, + -0.009437930397897754, + -0.5144142242471673, + -0.22123721330903523, + -0.7236698427818569, + -0.5786837587254972, + -0.12425270790063958, + -0.49697217149501655, + -0.03882316543076392, + -0.4515034701328345, + -0.7078695486101907, + -0.3837337850204658, + -0.34882967376717944, + -0.04044016387333493, + -0.43114503737070753, + -0.6045120653489533, + -0.2532073629281797, + -0.43119182312140963, + -0.793138048841762, + -0.1491207997800732, + -0.34498541917394987, + -0.4734887206021278, + 0.009618090698891857, + 0.11044205272496244, + -0.618894076295773, + -0.18243998089999203, + -0.7678118935527494, + -0.4767958214078278, + -0.4996754428901902, + -0.7802503643293034, + -0.12220849149014668, + -0.8175673480411336, + -0.03577177027973444, + -0.19901188066458386, + -0.06628824757593532, + -0.040341638026941684, + -0.7653569349621803, + -0.3928166462260719, + -0.2796398959592543, + -0.20786785214315262, + -0.15235328912509905, + -0.6360831706517303, + -0.023877281047611776, + -0.5998248091474774, + -0.7997045418219022, + -0.09744334850414749, + -0.026401494911682533, + -0.7633704097116032, + -0.6892456496880541, + -0.42634192868354803, + -0.12624242571995548, + -0.6104414833588182, + 0.03193568596089025, + -0.5028880066476766, + -0.7824317185765145, + -0.10275868413863076, + -0.5652931680479156, + 0.026423872139790583, + -0.8110220262824848, + -0.7830317201986999, + -0.5329623668854753, + -0.2209057555239472, + -0.19269049896107615, + -0.45353494520942644, + 0.09894182077517921, + -0.17323212657744558, + -0.34369004232917466, + -0.7673424435439955, + 0.07539502378230134, + -0.286386490303119, + 0.01452885007981708, + -0.6853706654599543, + -0.02557572681618936, + -0.7545465245979244, + -0.6236585152286984, + -0.38179135657149416, + -0.3383398718083298, + -0.3066702403293996, + -0.09566194751241353, + -0.809653094740129, + -0.7871484351183066, + -0.5606323789283038, + -0.6715329928378477, + -0.718418309279446, + -0.015237711608545479, + -0.7378840185735099, + -0.8443194492819824, + -0.06842848175583127, + 0.14825915854419724, + -0.8403251232718774, + -0.5486675767407334, + -0.5393000128115895, + -0.7826993750606611, + -0.4030188797646117, + -0.15346962448386126, + -0.2592199859662686, + -0.3274907131280096, + -0.8058903903724289, + -0.46297810675830475, + -0.5365743603099046, + -0.3900565771035646, + -0.14827914619494942, + -0.3140923961025964, + -0.40891796465778324, + -0.47264260682633147, + -0.6642151712450923, + 0.03243349095521553, + -0.8034016553829265, + -0.07619627842265886, + -0.7835301065044523, + -0.3021394047251481, + -0.13303606434751836, + -0.5064064167996247, + -0.7093396374948473, + -0.0295833062849169, + -0.49465150738115976, + -0.4541406992254902, + -0.38868619492185097, + -0.0010392491364896728, + 0.11463957377602796, + -0.8360663414330612, + -0.23976289304506648, + 0.12303632131153008, + -0.02248043859869331, + -0.5323380365177375, + 0.08650980373837902, + 0.07548580868563226, + 0.06963018597851145, + 0.024180904809999126, + -0.6262677340936286, + -0.4995541415001764, + -0.5515881407699166, + -0.7643838544659477, + 0.11085266449364639, + -0.8155897941544876, + -0.5711036246326954, + -0.5061548271533578, + -0.7559955243503216, + -0.8309870675460527, + -0.7955275253188575, + -0.251490416548525, + -0.7887602578470398, + -0.4913455742391808, + -0.5383776595937457, + -0.2701632446706804, + -0.23790672486975561, + -0.43425109830929676, + -0.5418422339562641, + 0.06880790077259857, + -0.32698344983393857, + -0.751389884616958, + -0.2423271995251035, + -0.2267711924469792, + -0.0407941208581839, + -0.18024303022579102, + -0.72702818488606, + -0.5788737625310415, + -0.502536318367192, + -0.4454776009237807, + -0.8324639476047221, + -0.23408109194115878, + -0.7593848574328337, + -0.8456217770899616, + -0.7802531543259202, + 0.018084591712137166, + -0.5356054116577136, + -0.7575387085666151, + 0.01884385398742172, + -0.4033555783508435, + 0.08547235085680749, + -0.3191339088585058, + -0.3884723533856725, + -0.42088511972246323, + 0.07568382065148216, + 0.0655392800732385, + -0.278775323317765, + -0.5135217789738651, + -0.5964757239861078, + -0.6395882064415808, + -0.2021278608352699, + -0.3788167152796156, + -0.029520395047288206, + -0.5730743910715999, + -0.4693657085440618, + 0.0377121151752684, + -0.4178954023698575, + -0.4939157443870322, + -0.5994282662757535, + -0.23334761545574512, + -0.795036098060813, + -0.34891553218095794, + -0.31163353101139235, + 0.08631961622417239, + 0.026046376124224557, + -0.5381859093252557, + -0.5822113690385922, + 0.02348847573869073, + -0.4537220432596637, + -0.004435071518192779, + -0.05601874664196027, + -0.6538913242523061, + -0.7926413686557162, + -0.6121631932894603, + -0.020230889798666718, + -0.26084432706080307, + -0.08804396740016573, + -0.7156365629987003, + -0.16191662620910985, + 0.09409249016892618, + -0.08955491690370232, + 0.06678090039263707, + -0.18208123315764158, + 0.0475423524442935, + -0.13097749573500284, + 0.054919205679421323, + -0.22756769177133684, + -0.5068855253229043, + -0.546851299087815, + -0.393675750974184, + -0.26977278125619286, + -0.7165609132497184, + -0.17769613924734318, + -0.8342380787235363, + -0.7485943468405223, + -0.5502485172604079, + -0.16707415919214808, + -0.740286574884918, + -0.37295725645347744, + 0.007904644351644619, + 0.02607604518597939, + -0.7859433929431452, + -0.3953534862378257, + 0.13140278781948755, + -0.23411406284999414, + -0.33286233393282216, + -0.4660640062488567, + -0.38457967333946375, + -0.7245674209236437, + -0.6306340486711991, + -0.1747768464421232, + 0.052341716162321084, + -0.6096165082582419, + 0.09000910104636406, + -0.2927502596491288, + 0.03565989486803145, + 0.04085316245278392, + 0.054386268133640336, + -0.6909705715680357, + -0.08947807184718282, + -0.5459352250102296, + 0.10176233695364312, + 0.12450252819975172, + -0.6928941246957079, + -0.550490438386064, + -0.6939013910000826, + -0.04471518851243006, + -0.04861833730547105, + -0.5416821292635564, + -0.13679877239215155, + -0.8011679515494696, + -0.3203748631390345, + -0.7995523646886256, + -0.5371904262238687, + -0.4324921146642474, + -0.2641678708461854, + 0.07875722479074876, + -0.0349611751324127, + -0.816779875987909, + -0.3863126136650083, + -0.8206731650830906, + -0.2066841385227839, + -0.8394524412485515, + -0.7218479919468824, + -0.7393981254462967, + -0.33750601140259906, + -0.07339816200976834, + -0.02386001846456287, + -0.3581002154864651, + 0.055593434282821264, + -0.7156122087719943, + -0.2692232848547188, + -0.3228355802119516, + -0.8281973237460988, + 0.012862920993669147, + -0.07549776965069255, + -0.1653338620841509, + -0.7012471427340152, + -0.20743308286300044, + -0.2502720052024976, + -0.5247369788430938, + 0.062108767349888794, + -0.26402592777259015, + -0.7100082465238148, + -0.807162382208245, + -0.13048390927705855, + -0.6950311726574874, + -0.4916586476208124, + -0.5954181152133182, + 0.07103780789035474, + -0.5188011338926735, + -0.10117581611524995, + -0.6221587461436267, + -0.7568279230908062, + -0.28208571489325807, + -0.6962575478898423, + -0.19800893633216632, + 0.09770462356556464, + -0.663746428009864, + -0.6372383655879433, + -0.5910417295691093, + -0.8067290394058089, + -0.7564254430359624, + -0.6137833285300891, + -0.30453708133308577, + -0.6670205775671267, + -0.4664110939345531, + -0.055536606438804315, + 0.1056735482450647, + -0.6015624213953492, + -0.6048714136654386, + -0.7272606997501181, + 0.005711830487260761, + -0.5618618340607688, + -0.2148765303745056, + -0.5159487759926518, + 0.06537418719759203, + -0.14469448592149647, + 0.04325733046393032, + -0.4567454234640476, + -0.1568245450713036, + -0.4168351504138496, + -0.5293310795815716, + -0.14784430647602775, + -0.7742048534642672, + -0.18250771416430933, + -0.7234831007698039, + 0.01244740240386999, + -0.4658683273803951, + 0.04953291683167238, + -0.31263161267421546, + -0.2526655325209831, + -0.32444153349575644, + -0.4860781546757548, + -0.7451516693321678, + -0.5996000318314856, + -0.2886867516304442, + -0.5180562167113415, + -0.4869098416582828, + -0.648321467773207, + -0.6673791170711135, + -0.6562271089220437, + -0.4822146501686591, + -0.15006558244809243, + 0.09756025419818037, + -0.7893762556350427, + 0.1106861216082009, + -0.23357909788204934, + -0.3769363193673261, + -0.39288463616071156, + -0.2230452674955804, + -0.7781435583343708, + -0.567924261917585, + -0.688701165595123, + -0.5158138310246653, + -0.21874105345402517, + -0.6399420995723574, + -0.5261191490823951, + -0.40800767800583376, + -0.47399337405294095, + -0.663510553215669, + -0.19983510896837908, + -0.7405809283177974, + -0.270271450313849, + -0.46003637186566626, + -0.35702823941117795, + -0.8458764469628034, + -0.423186568180395, + -0.7706997168779138, + 0.031010169803731058, + -0.771529191487596, + -0.5132188229193289, + 0.14816999390019747, + -0.14228149501426524, + -0.3015774543288665, + -0.6507039763498013, + -0.8139739101265725, + -0.432365449370945, + -0.33897312062119944, + -0.5108010262548163, + -0.7035876797730894, + -0.6316947255315323, + -0.7294214057782071, + -0.7403066379143066, + -0.053762813599249726, + -0.5168482443763835, + -0.6226336598131142, + -0.6324470966095798, + -0.0882563926507266, + 0.137493877393156, + -0.5695681156729692, + 0.018209206206812434, + -0.3301335166144739, + -0.4088659493259431, + -0.008818158035183488, + -0.12984405680880018, + -0.14412118925962125, + -0.11725533597267568, + -0.11618030211506536, + 0.13628446181632914, + -0.45922207122744585, + -0.6866787530006276, + -0.6219936196317946, + -0.5875420167434527, + -0.5622965560339035, + -0.4261392636501041, + -0.7528216995962111, + 0.10218733782735046, + 0.057103538116790475, + -0.33461550750097335, + 0.06739070685234616, + -0.0230438586845626, + -0.13215580602535382, + -0.790787906485241, + -0.5715157421496911, + -0.6157830781725582, + -0.2028088732714307, + -0.46961153117481025, + -0.51473712279189, + -0.0023642775507358715, + -0.6621260766499051, + -0.3982852583762392, + -0.5586148824808139, + -0.20222288535489574, + -0.7698521504021987, + 0.06389206694225502, + -0.47622942567760423, + -0.370343367111714, + -0.11062990254615968, + -0.21878519395173857, + -0.0956106402565362, + -0.028908089849628338, + -0.4228011665022967, + 0.12278595741484932, + -0.34085916596825083, + -0.7479983741626313, + -0.3347925398373801, + -0.03372295423719274, + -0.11787996380692267, + 0.001086653182245545, + -0.8265989321140632, + -0.7159647640286175, + -0.5050972470357105, + -0.6570620678976191, + -0.15198272932715584, + -0.6588800046577556, + 0.11521737112227182, + -0.4790640779260095, + -0.10780898431972763, + -0.2779471486245253, + -0.24775404071740137, + -0.7729441305454794, + -0.3831238565081862, + -0.336165129780708, + -0.32856534308059193, + -0.4155831714466292, + -0.44893395125492175, + -0.25895820931720415, + 0.02066170467046624, + -0.31439399956471115, + 0.09672027882489165, + -0.1601668124282477, + -0.48541645016727053, + 0.11273301688990811, + -0.6855622813841836, + -0.22602185765553695, + 0.011868109040768071, + 0.0030407655571359493, + -0.6571623649189402, + -0.2661871723026298, + -0.30782251512905257, + -0.5432455387893375, + -0.5398912256849073, + 0.13443303318179045, + 0.08508595850071643, + -0.5111503719892303, + -0.5013022131189083, + -0.059890813317492575, + -0.13234505681271358, + -0.16665121670751948, + 0.11520219082072258, + -0.2799866071282394, + -0.43992604051810325, + -0.15038632992317025, + -0.32185041123837266, + 0.0697533215343128, + -0.7273934365125033, + -0.30733941210479276, + -0.7518537653755855, + -0.45102353165488235, + 0.07246670977273417, + 0.09470342076261173, + 0.09606211166872869, + -0.730942587527828, + -0.1421645457852202, + 0.11421084543818061, + 0.020550238384076214, + -0.11698118659262602, + -0.5651503919050931, + -0.573345612640958, + 0.1362231729098491, + -0.48002209615969943, + -0.7150593280217037, + -0.43398454009498133, + -0.38517348887709996, + -0.020224654854942847, + -0.23611745177043086, + -0.006487159479738214, + -0.4258247982734469, + 0.015047703585755468, + -0.4310793848705261, + -0.6538770947867478, + -0.4551408052425444, + -0.7193995995825859, + -0.7167026405243202, + -0.48815475913405143, + 0.06384865952851271, + -0.3702631268191782, + -0.10305741869712459, + -0.513759392452583, + -0.7441683250537661, + 0.13195533878833177, + -0.0380629831297693, + -0.4797789473526486, + -0.2722332579601203, + 0.07592874148445194, + -0.23077900220337466, + -0.3959940427606212, + -0.3566947572637592, + -0.6905626975440164, + -0.1932574216368511, + -0.2769211145652217, + -0.7971412527246443, + -0.5647113516455943, + -0.6022522559470841, + -0.14686465591123943, + -0.8264166755710336, + -0.028807221374887226, + -0.6094338120565671, + 0.013250879866192777, + -0.2815606366792366, + -0.514946318181342, + -0.5602160811438154, + -0.29582779088291344, + -0.7411650097990485, + -0.3793173657118522, + -0.15372095632009142, + -0.3434369293948162, + -0.3772023555167962, + -0.5861642928605822, + -0.14012606390533233, + -0.5228417350402047, + -0.8238282372027085, + -0.29216860900534924, + -0.4150039169338255, + -0.16639289143017721, + -0.7680338806803508, + -0.7453255712878677, + 0.0847457968303803, + 0.0992284903096291, + -0.026337758067091155, + -0.4444129874153832, + -0.6343088832648337, + -0.037927130498371486, + 0.033510414093129826, + 0.08895359445603812, + -0.774335098099411, + -0.45680836182327916, + -0.8159813324395685, + -0.03811640954027329, + -0.5508061109384375, + -0.36883152782833534, + 0.03485799274610901, + 0.12564385700536296, + -0.6455864475111662, + -0.590993586442544, + 0.02546144656432381, + -0.2260396088878699, + -0.3039829138290936, + -0.006117198155457193, + -0.46253013063874754, + -0.731640219810137, + -0.557217800347906, + -0.27195563198718553, + -0.7764364631354915, + -0.6845955192646611, + -0.6732453506900365, + -0.3690239306724474, + -0.7645013494834231, + -0.7397538583421543, + -0.3557486969629605, + -0.04019280430518157, + -0.5517697587682453, + -0.5392990954521781, + -0.3776521638566539, + -0.6665813645897405, + -0.6421444613668512, + -0.809449686245657, + -0.2339008171028527, + -0.7333301761829075, + 0.11956338631139074, + -0.6333809896788145, + -0.8044905311952343, + -0.8411116476511394, + 0.1285389706379112, + -0.11967275725537563, + -0.16492458137709176, + -0.6980203904462187, + 0.06847466331872099, + -0.6194570569968947, + -0.49565495127364156, + 0.12781201183585955, + -0.30638863725762944, + 0.1459433471992333, + 0.047622175171488035, + -0.008525297011771071, + -0.451788158431649, + -0.7507563693877216, + -0.04106791675691257, + -0.5751006088798583, + -0.535603155513942, + 0.12147227901334734, + -0.8134488332663793, + -0.26875117551327143, + -0.7762905471481092, + -0.7339108623687245, + -0.5365212021195066, + -0.4125991038131087, + -0.7946491218307933, + -0.39005953424400797, + -0.6498709261931388, + -0.17897275946131452, + 0.09953922407122973, + -0.3391078417324348, + -0.5998345480802376, + -0.822982697387482, + -0.7850059003758186, + -0.6815366704617842, + -0.4407989054147615, + -0.05033082328031979, + -0.2367611820254033, + 0.08084921187713501, + -0.04905219203191602, + -0.32324492448873, + 0.033505851100363526, + 0.13354022839094548, + -0.574789934872028, + -0.12886147857794505, + -0.19745267634559716, + -0.02906704170743779, + -0.14570297905843665, + 0.06780023183009287, + -0.031342327395031844, + -0.7092233000256811, + -0.6257758133111977, + -0.5492833544390032, + -0.7295834384564424, + -0.8455116895798166, + -0.36677432544148536, + -0.2787916868690268, + -0.22323694850915476, + -0.5097684114940353, + -0.5272617038570524, + -0.24270163697253722, + 0.0489359362114965, + -0.5972809613076475, + -0.2356023644063645, + -0.05841950562888709, + -0.40708557825658326, + -0.5733068958508591, + 0.09450000590953012, + -0.66273506118149, + -0.42014912735077703, + -0.011046345890995735, + -0.33793406346899624, + -0.6787646313960035, + -0.7088899264285891, + -0.039288179148552205, + -0.26011259707908907, + -0.6789407436812884, + 0.04597072437557237, + -0.24938557119133442, + -0.21243114879695812, + -0.7439920567012197, + 0.059977263925316326, + -0.14947726252001148, + -0.37245690783101115, + -0.4578200594815655, + 0.04573823012218592, + -0.17192528105684968, + -0.5669483180353557, + -0.8291059313754582, + -0.8161582707681265, + -0.5268666924278518, + -0.5418575172532851, + -0.28579963481519033, + -0.6480650775139261, + -0.7709474295208051, + -0.14096733729232147, + -0.3261467119553777, + -0.2576575953186736, + -0.019798349017404737, + -0.18715241896673163, + -0.793277895700865, + -0.7594110417336891, + -0.7481957838068891, + 0.061949706969141705, + -0.13853844754029299, + -0.7634649489359377, + -0.14054370239752423, + -0.7230557498459996, + -0.7651661770347304, + -0.5677838296620347, + -0.1600056270903223, + -0.2830099243231835, + -0.7433330287042819, + 0.07514463407596805, + -0.8143093295418296, + -0.22806914878522677, + -0.02748431114049199, + -0.5758512642940823, + 0.05568606455706204, + -0.09433881946854772, + -0.7598114668649776, + -0.3689106851371698, + -0.49723602723649885, + -0.2622664005949804, + -0.1627808764954447, + -0.19005337716617388, + -0.3465317539163396, + -0.44234722046845953, + -0.08171378121539485, + -0.7774891075487196, + -0.39241229987768644, + -0.0130205683207123, + -0.5351896740345656, + -0.07477808735530067, + -0.46317276282628334, + -0.4889479180770148, + -0.1894676846986071, + -0.5253440520219274, + -0.48878985205051556, + -0.1453238143655462, + -0.19386073612306698, + -0.6143953125167738, + -0.5372203941690125, + 0.0679296859497307, + -0.5667822969914083, + -0.405821589353725, + -0.24577630815675922, + -0.4008713950456932, + -0.6942216764828978, + -0.423605282992465, + -0.5133136174094164, + -0.42121431560986505, + 0.007479536354733418, + -0.7132630360309177, + -0.7234193689475258, + -0.3633748085428124, + -0.7439570910509747, + 0.10831429704716466, + -0.36532023742735087, + -0.035594642724085856, + -0.6823123720989304, + 0.07472725304753636, + -0.27846084734123033, + -0.1900151094793664, + -0.6141981974783871, + -0.36438685853286107, + 0.012869721951778934, + -0.39152444233204803, + -0.8279933276465802, + -0.5294384352778764, + -0.7729411181620436, + -0.2634966338906767, + -0.04231619043042956, + -0.8052086736844664, + -0.26172599945263253, + 0.03707743801566454, + -0.42964627688465806, + -0.40199357383322376, + -0.05845332536684422, + -0.6520845508216675, + -0.773418240942172, + -0.35531766999882514, + 0.01659381996438225, + -0.06605328894421891, + -0.700866965124671, + -0.6641182930192515, + -0.7766985100639533, + -0.04423560462008136, + -0.40551286353864163, + -0.7635417480814378, + -0.10268560082887201, + -0.7790257561161138, + -0.5513134229925193, + -0.1402935208654289, + -0.3059340714549196, + -0.24485190479240282, + -0.32239728601368367, + -0.6514778083663035, + 0.06594662789214001, + -0.45322684231579313, + -0.1200977602283485, + 0.08942006377142597, + -0.5220650198080554, + -0.7214840187457412, + -0.1374498138082687, + 0.00967576272630244, + -0.3735068295765588, + -0.816654411931946, + -0.14707697760150074, + -0.7523314718277836, + -0.5173326197456434, + -0.18597095637682792, + 0.0627581892839022, + -0.7968467476367467, + -0.5967260037589606, + -0.7866711659221257, + -0.043090946649650075, + -0.20303223037095053, + -0.8287342063774187, + 0.12516196782561073, + -0.7044691762898698, + -0.3395787315728347, + -0.46031679460690955, + -0.4128325835923278, + -0.23104366295954493, + -0.6003605315252997, + -0.7593300492371838, + -0.2733720306882155, + -0.060013399709465065, + -0.16523290375629907, + -0.07144322024554917, + -0.34286864008404083, + 0.07857937051389541, + 0.07395938361484622, + -0.8448332561606035, + -0.39963315360415186, + -0.5286538157218935, + -0.8340887419289368, + -0.08660739215034341, + -0.42204469260065947, + -0.20790775502664627, + -0.20082844357866658, + -0.7199106952111405, + -0.09392435025496604, + -0.4964123271981698, + -0.6401078267066133, + -0.42394944917200783, + -0.0744956038956176, + -0.6180368965251865, + -0.06048196297956021, + -0.5377905352233079, + -0.19204830250521798, + 0.0022280269237484607, + 0.13542209382499337, + -0.4923748285619818, + -0.6262335903592331, + 0.13807462699079498, + -0.22041499328187308, + -0.5158817908246722, + -0.7586301915960657, + -0.10580160364062441, + -0.23620837624965474, + -0.5407412426981734, + -0.4384895950340164, + -0.0505070621240451, + -0.5799529676006856, + -0.2695344345633337, + -0.7455836359637444, + -0.7813440073354931, + -0.7592256149444263, + -0.7735841329288314, + -0.29144847608200797, + 0.08795162692506076, + -0.13821161538548066, + -0.5373245601963315, + -0.7878672568104506, + -0.7458344372917535, + 0.054950057635253846, + -0.040129126423742334, + -0.1023482530721389, + -0.1557519593504063, + -0.8005069186791528, + -0.17670796805283873, + -0.4425244148153696, + -0.33638591843836996, + -0.8423504802902744, + -0.43102620771152955, + -0.5651132189748844, + 0.06295276744357214, + -0.39432232394181976, + 0.1331973500398247, + -0.25685811907723943, + -0.6871353112314509, + -0.3698460197942351, + -0.787414763164929, + -0.2784933752003981, + -0.10378764309106436, + -0.1537701859878473, + -0.7929871869927166, + -0.712216660628675, + -0.6471228407480427, + -0.1269408004623599, + -0.16542097209081086, + -0.2406743690313251, + -0.31830699344027813, + -0.3965732783199497, + -0.40402090348884667, + -0.7401884900992707, + -0.6753722062741636, + -0.05392027491471607, + -0.5115125093060777, + -0.8459566922135544, + -0.5621114008158747, + -0.4215255038506987, + -0.0753512646150225, + -0.4235879177231702, + -0.5556850230312427, + -0.03822412244203932, + 0.14461209819984788, + -0.42753520467225375, + -0.6912810904863143, + -0.6205761709535904, + -0.1114254452870247, + -0.26169330006222113, + -0.7127582385027827, + -0.10620517934657558, + -0.03742846468876637, + -0.3968880439241209, + -0.11461508148704269, + -0.6551540620413109, + -0.6171861676845831, + -0.5069346878938956, + -0.09789832105918617, + -0.23336431928177637, + -0.6924664193374744, + -0.6464017741772029, + -0.20785521766807635, + 0.13928620593452146, + -0.15228172348684377, + -0.6589403757508636, + -0.7282419796703783, + -0.8448502482128049, + 0.07610004340227794, + 0.04486503298552724, + -0.5949892985985508, + -0.4602382754760634, + -0.42961991049160625, + -0.46887888553371115, + -0.5799007060494072, + -0.22743610836113048, + -0.64784806124991, + -0.12231195350049429, + 0.14439092362873907, + -0.4925081980202497, + -0.22144665164932165, + -0.3659377774918332, + -0.05794861586337652, + 0.06200456824416489, + -0.04938037576283749, + -0.36901378012648955, + -0.4172681779802261, + -0.7234611409271954, + -0.31701883063215075, + -0.7025201629134536, + 0.028119006486075127, + -0.016814759760862774, + -0.6049228207127226, + -0.17018873310369953, + -0.437683279720771, + -0.5163368691767264, + -0.832213920079426, + -0.15797492875931507, + -0.4868846321667685, + -0.6115872300824574, + -0.30466590386007886, + -0.7222704472869076, + 0.06002679718164117, + -0.7180643546600922, + -0.09605711834102182, + -0.5630300718924626, + -0.6768896952949784, + -0.5687268112005693, + -0.2759029460537342, + 0.12378213030783847, + -0.7972592304319182, + -0.8396009786146996, + -0.45992131240195344, + -0.732441767129484, + 0.09628521558576342, + -0.7895675780080692, + -0.1640722393223265, + -0.6160374871059959, + 0.07878510860098975, + -0.13744509682063355, + -0.6434178356135186, + -0.21394264719724032, + -0.22645534699917025, + -0.5144862037773219, + -0.48792151429266284, + -0.1042024114009622, + -0.15262191895572796, + -0.33332943773676005, + -0.788734798040273, + -0.2209965729457275, + -0.2772220545903512, + -0.09474861840885207, + -0.619011673218494, + -0.022227799751712518, + -0.41236457252468234, + -0.7461701498183784, + -0.6063448654528811, + -0.0017523770074875378, + -0.6256331448460041, + -0.4032224819378734, + -0.7392675473611916, + -0.43488992054157916, + -0.512780208527108, + -0.007737763764387617, + -0.5570263392410579, + -0.20339550160939412, + -0.5931793573477611, + -0.6856936963888579, + -0.17966643339835708, + -0.4948528237657791, + 0.10587316807741298, + -0.025631466505853573, + -0.002032519639819541, + -0.6758093511533732, + -0.4574630389682983, + -0.20091453984904784, + -0.753004556861372, + -0.19730915349277667, + -0.31925852820263134, + -0.0025597341745904334, + -0.33602247435757304, + -0.834919679733204, + -0.6001576933117057, + 0.010252871013211595, + -0.050189899897277956, + -0.019845168847713368, + -0.20330159658943658, + -0.4430468468954356, + -0.6643144406845518, + -0.10666468970689458, + -0.02961779071087267, + -0.3443040164305323, + -0.7959117340183667, + -0.6036470544986388, + -0.3653478559642681, + -0.3267582478525147, + -0.35156755521937044, + -0.7403235615169719, + -0.7910199909110343, + -0.59994275157012, + -0.4420584943244056, + -0.4888131288461573, + -0.14176049234856425, + -0.299403133067319, + -0.28520402635022035, + -0.8236994699458344, + -0.4107442070047195, + -0.8319328991694006, + -0.817757956695498, + -0.8325769076159508, + -0.24355718756753153, + -0.5220498321208619, + -0.12045856489542472, + -0.0368956648985459, + -0.47808994122537635, + -0.626211618137958, + -0.40091509499753986, + -0.5162751357758357, + -0.8235144900470457, + -0.1817143690483165, + -0.8055972875113784, + 0.07749356760916071, + -0.5348021093403883, + -0.10710966328797866, + -0.02135590261993836, + 0.02276470860756663, + 0.029609185900846158, + -0.32814125260732674, + -0.3281144420331218, + 0.3656499185009852, + 0.1630736684270776, + 0.2658782704995871, + 0.2880803711161235, + 0.2989056525032546, + 0.27214387387998284, + 0.2980611948642681, + 0.20090633076865821, + 0.20662442173936768, + 0.30087333601121147, + 0.33255837175131536, + 0.3524269050035948, + 0.19268855364325255, + 0.28863616761224564, + 0.357126477756995, + 0.2005185482823703, + 0.36395784553127547, + 0.2971021606495793, + 0.3250362613723031, + 0.1622265180645924, + 0.37540761343823914, + 0.20909348400794048, + 0.23848161797904355, + 0.2734132683596409, + 0.18034707521312426, + 0.3635000742206955, + 0.2668188601153306, + 0.22978272038562242, + 0.32562735977203516, + 0.20764584817530268, + 0.2971387390896001, + 0.24187489132118645, + 0.3350368371551917, + 0.23654503949024533, + 0.35607308170291907, + 0.3079788981843886, + 0.3532090361384499, + 0.2557227693972688, + 0.16668230771082745, + 0.390805220614955, + 0.16938472858243417, + 0.27858139693691014, + 0.17140609938167758, + 0.3298999092606184, + 0.2805568875539899, + 0.3796683514558068, + 0.1604752783806243, + 0.2530586096213566, + 0.3736223508458667, + 0.3932456946099391, + 0.24662636889630754, + 0.32442099842697836, + 0.26117044921551874, + 0.2380073462301111, + 0.28176302113580326, + 0.24491452028270466, + 0.38851223627962117, + 0.36872872393414535, + 0.2259621529633401, + 0.2733308677812183, + 0.2843854365325869, + 0.36119002713385784, + 0.27326103007239533, + 0.3124663433052068, + 0.20983311865311943, + 0.34793044655871663, + 0.26351312905421576, + 0.26846833663402897, + 0.31416564614255194, + 0.15663565535749113, + 0.2261937908435524, + 0.17845075947599615, + 0.3779988713685713, + 0.2988899308591621, + 0.2930658396681396, + 0.24722453328112556, + 0.28133103447201735, + 0.27059469801941904, + 0.30585602477212337, + 0.21200789391724306, + 0.3808662930680894, + 0.33789623890594456, + 0.1583925785922619, + 0.15827267379313922, + 0.2392534635073711, + 0.199316332717072, + 0.28390310012577225, + 0.1934589127867745, + 0.2979747840131365, + 0.2682485288541164, + 0.1896411455065421, + 0.28344125859579383, + 0.17129620653506203, + 0.22646928176404343, + 0.32089347629796244, + 0.2450816459197107, + 0.17880057993055978, + 0.3857339534486752, + 0.33578209320519825, + 0.2306157040453289, + 0.3842347250268064, + 0.27145571309874217, + 0.2934693382060891, + 0.3454261077624611, + 0.37343361087198235, + 0.3786861432644277, + 0.24821615917072753, + 0.2047651235235812, + 0.3859959184624251, + 0.3129030229331575, + 0.3651906126490732, + 0.3159330774894821, + 0.26759422915268016, + 0.20853535624150044, + 0.3278232648304566, + 0.39325822976961555, + 0.16036191433348368, + 0.1871495380540564, + 0.29150950302726364, + 0.35021756960271777, + 0.27687764359631195, + 0.37221462315645865, + 0.3010939315161068, + 0.3278369896645991, + 0.3869513324064344, + 0.33700959423810517, + 0.37991423377534306, + 0.21578724892151097, + 0.2813405417090734, + 0.2833256936064653, + 0.27840211355990474, + 0.39283802514630983, + 0.38020654149934285, + 0.18838576535359672, + 0.22630258329128697, + 0.27458725419427565, + 0.318424276581199, + 0.22780209188574982, + 0.31203993645362743, + 0.2656316273058219, + 0.20242765878367577, + 0.20325131263067092, + 0.30350585514779777, + 0.3530453950247628, + 0.2680020796849989, + 0.3177529568664562, + 0.17623584561877245, + 0.35995956243369864, + 0.3039267928129078, + 0.2686034722015876, + 0.32618384493768704, + 0.2700223345507072, + 0.17941685555451783, + 0.23895261597040984, + 0.3407255293572049, + 0.2593154537387099, + 0.16002255992876743, + 0.3227525456252055, + 0.18262888450819242, + 0.34934655522392344, + 0.2477969126823108, + 0.33239852624846217, + 0.26106526854708595, + 0.24858490090863766, + 0.1960394288363826, + 0.2167900423424468, + 0.21529516107174554, + 0.38147386407276873, + 0.2758847008510841, + 0.31012539131420536, + 0.26679260586493797, + 0.220850269295756, + 0.3458134758313765, + 0.254401123824712, + 0.35724676941242917, + 0.25944005108869705, + 0.16043692457295547, + 0.2728547447360322, + 0.15893653001790342, + 0.3222805125895694, + 0.3611184863732636, + 0.26460684820633323, + 0.3705493392263975, + 0.17383532415505207, + 0.39212711136403894, + 0.22986836510334702, + 0.1573125834607376, + 0.2548512620459238, + 0.2864981396239323, + 0.35616017101775155, + 0.3771446052149271, + 0.29272016333857753, + 0.15989690638493184, + 0.3390462464479965, + 0.38509256628240884, + 0.31726503353891433, + 0.2328174707617498, + 0.36922724439466503, + 0.36477694935141103, + 0.16035312776366825, + 0.3732267603426747, + 0.2600776072310578, + 0.17301268737365735, + 0.32834518502679966, + 0.19850177268460645, + 0.3635897113775436, + 0.2604864483836926, + 0.3523213439267049, + 0.3181425491841841, + 0.2520609911814185, + 0.31624228329563897, + 0.22974851252319417, + 0.3161997875412572, + 0.2892063430125634, + 0.27550064516736067, + 0.2769407923702412, + 0.34231139801734894, + 0.3332968720808206, + 0.3850626755077266, + 0.30534736784864874, + 0.20719311650129685, + 0.2891644979621588, + 0.3310535976118455, + 0.17061869897478874, + 0.2907835253535319, + 0.326075688884126, + 0.2254207740191867, + 0.23203368844673944, + 0.2723489400020375, + 0.29805322329774814, + 0.2322866885915943, + 0.3319500123754804, + 0.26274523160066066, + 0.2517249595295529, + 0.2621221970841941, + 0.29900216580271255, + 0.24035651972596475, + 0.26948587830202964, + 0.16250820209178576, + 0.3745960585167568, + 0.34847289851123914, + 0.18646658943264297, + 0.25781376490392494, + 0.34636864304608506, + 0.21436089790374252, + 0.26827460940327474, + 0.26164213255779695, + 0.3921131930592868, + 0.3256688395056786, + 0.37077729741125587, + 0.37204538327694986, + 0.39268757055550646, + 0.24539484310414703, + 0.210573765791165, + 0.3379551188714621, + 0.28751772172689505, + 0.1950255666104546, + 0.36579225882384314, + 0.38091671912763186, + 0.26472890324158305, + 0.25866435601740506, + 0.24486481148963973, + 0.3547942825571178, + 0.19678485157154502, + 0.29524565674506903, + 0.3902012418678972, + 0.2369647306612857, + 0.23885310391857223, + 0.38973737096295624, + 0.37124754254388026, + 0.18021168269049115, + 0.2170557077225642, + 0.15959916609106586, + 0.3359768431646145, + 0.26856241280350684, + 0.373816558130621, + 0.15885826007750725, + 0.3004449984346109, + 0.38228848964465123, + 0.36123154369554716, + 0.2080598003475059, + 0.2880163955668843, + 0.3668365480367394, + 0.20327323054690158, + 0.27501996841106136, + 0.1914983421347125, + 0.2772375185096419, + 0.39231076210668514, + 0.320672273228105, + 0.3273530646899563, + 0.16506272590430315, + 0.26015378114913906, + 0.38175569785881025, + 0.25695893101514344, + 0.37426171138963754, + 0.2913930268330045, + 0.22945850337065615, + 0.17554568411530647, + 0.2780919416530635, + 0.19728634443914214, + 0.2274959476898109, + 0.31090457777174296, + 0.2701880328701006, + 0.27348236106188717, + 0.29396820721462913, + 0.19328472913940903, + 0.2475247495964849, + 0.23156321730750007, + 0.30270992247062656, + 0.33059928429922136, + 0.3004255053367154, + 0.3784147838351965, + 0.2598268034112238, + 0.25086517901794075, + 0.24599676660086967, + 0.3379663890815547, + 0.2567228795873573, + 0.354783028573781, + 0.22240184932143395, + 0.29122420246095404, + 0.302896015413888, + 0.19548829294443318, + 0.3208891678412755, + 0.3717981526659775, + 0.16028459986004107, + 0.3886998162467346, + 0.1631587859786446, + 0.2747357821289006, + 0.29656015643377237, + 0.19381982883276389, + 0.32711830908386497, + 0.32621881020016674, + 0.18299687017545224, + 0.20739416970264557, + 0.2818900568513759, + 0.20066181983114106, + 0.2788643383064976, + 0.346529390284427, + 0.22212199160766144, + 0.32651442843926776, + 0.34971089329720184, + 0.294881835579754, + 0.17629642523516978, + 0.2299128069247569, + 0.3866918240001057, + 0.23635426225873213, + 0.3663516674689816, + 0.25833650571839956, + 0.2653088431652366, + 0.39150080552475824, + 0.3500465046014776, + 0.25144044923198905, + 0.345887536415329, + 0.18525158737530478, + 0.21668219300939792, + 0.3879662278533062, + 0.3900625969538941, + 0.29174370511319014, + 0.24593018733778454, + 0.37797860013299767, + 0.3018227848760777, + 0.3647884791771152, + 0.32953244216862926, + 0.35447591420080676, + 0.2000416359957444, + 0.20911894610020307, + 0.24769722168182456, + 0.22026358883964076, + 0.1631343072460617, + 0.23155018129725394, + 0.18194197979585322, + 0.391584878616853, + 0.382809048672088, + 0.2888989225942789, + 0.23149589851460098, + 0.3882763419607405, + 0.3430404786021325, + 0.37405542758338794, + 0.2896425968439096, + 0.2352112702621877, + 0.170378999052676, + 0.24539621919341026, + 0.37316076380463803, + 0.2125850107121575, + 0.23224899536962978, + 0.23885682268201605, + 0.21144370490411873, + 0.3628671038098319, + 0.37588119528397745, + 0.3704105141145848, + 0.17003445400046577, + 0.271388051457265, + 0.37638865270911137, + 0.24023075176120529, + 0.39328521522257176, + 0.34643940049141264, + 0.3725343984170671, + 0.32835418398610744, + 0.3192924147167303, + 0.28326038985157875, + 0.1816734453712041, + 0.19140822921282694, + 0.26637709384036223, + 0.32207330942080103, + 0.30589253927941823, + 0.37301230806786095, + 0.385074287491154, + 0.2263732945153158, + 0.36818630815765907, + 0.2816365065840858, + 0.17073642961306681, + 0.21502978718529958, + 0.26900254729998735, + 0.17826506595999028, + 0.2849484883881833, + 0.23181801362256418, + 0.2304196059537571, + 0.20803141400457625, + 0.20062294222730145, + 0.21519290015852444, + 0.2705584831214727, + 0.3144407400250565, + 0.31830710582577093, + 0.1840264410478816, + 0.22053118702471736, + 0.22369493430698267, + 0.36806613828015766, + 0.3010830440976401, + 0.301451176877788, + 0.20764238600886015, + 0.3465646580036936, + 0.28911696968592526, + 0.25415361614565635, + 0.3286284754621054, + 0.2663246767023578, + 0.3599382389072395, + 0.29089642985543906, + 0.3690770760542755, + 0.2741336409637504, + 0.19703921662191878, + 0.20335521560541742, + 0.19837738084259104, + 0.23580592736413297, + 0.34723227644801474, + 0.3746933743750608, + 0.38875179074226385, + 0.29040824578700686, + 0.1865919377620024, + 0.19104174678092434, + 0.37207111384147684, + 0.3641310062775547, + 0.3391963194954718, + 0.3704130182959281, + 0.193782230667305, + 0.313588474861396, + 0.3479167226785573, + 0.17555440957766158, + 0.20334249339750482, + 0.355468561043164, + 0.23957600514194777, + 0.25805410966460635, + 0.25453581866345587, + 0.2653028301370304, + 0.25368124556374627, + 0.3782368898640174, + 0.26437315607556117, + 0.37742036846195215, + 0.26857782860462864, + 0.3405380277215486, + 0.22003142231936823, + 0.1592155579175818, + 0.3541609649398424, + 0.27015685192170413, + 0.3285261352909373, + 0.20121037341455975, + 0.29420187590505276, + 0.1664064478695242, + 0.17228355468562825, + 0.389875310577679, + 0.20686821607531689, + 0.17037360687342937, + 0.3655972585418462, + 0.2300805485373279, + 0.36998379000064385, + 0.2541907325732535, + 0.2527893166374862, + 0.2798844118508946, + 0.3088947648582812, + 0.3521439267261686, + 0.21044813937803694, + 0.3771991619787589, + 0.3125347677367255, + 0.2436220688183014, + 0.19949919108637515, + 0.2304999796422208, + 0.2651011258222328, + 0.15718740035476583, + 0.3301287003660017, + 0.24958303923305586, + 0.23143970528638674, + 0.22480990717991953, + 0.20907613720025545, + 0.2942097927090582, + 0.19089338604411787, + 0.18657545948403526, + 0.3279907405020684, + 0.2828899624332115, + 0.19069326373123058, + 0.21725806680938003, + 0.2745232335555635, + 0.39082054935565136, + 0.27871117223118325, + 0.379329929219053, + 0.22224212942289243, + 0.284956558449036, + 0.3052092860661287, + 0.31003410071037596, + 0.22960477752269493, + 0.33845598582090086, + 0.2961425820463282, + 0.34627680985354875, + 0.3195865807852054, + 0.27605456085152724, + 0.22966044202275743, + 0.27622090138865146, + 0.23634996924171398, + 0.3340512670477269, + 0.3359352792857967, + 0.379713941370324, + 0.17978757919925673, + 0.25437965799070106, + 0.3824345423496744, + 0.20346894729324205, + 0.3040072402892524, + 0.30826571818330806, + 0.15811285087710764, + 0.3100590153045748, + 0.33057154493147956, + 0.30571363583450395, + 0.1894150565021394, + 0.25570674064165055, + 0.3932052934319098, + 0.31816725178122607, + 0.2005355644254816, + 0.26259215518073714, + 0.254419161038164, + 0.1925951863944049, + 0.36285591992584465, + 0.24614383655709376, + 0.2870345767775095, + 0.3452059852701833, + 0.25317457011795097, + 0.16438166169515359, + 0.24877414951823495, + 0.22538865867702743, + 0.18256376323241133, + 0.2788148720113431, + 0.31127443894036133, + 0.2981110080777961, + 0.250441056876246, + 0.2785252755409212, + 0.29008184844578744, + 0.17878922179466378, + 0.33865239636904043, + 0.18276509246557918, + 0.2979977557118002, + 0.35344284172495377, + 0.33842265430923163, + 0.359839261168328, + 0.32299893324971374, + 0.22382067113692783, + 0.3270112379866804, + 0.26804011782833104, + 0.3220454566255234, + 0.25644935017059267, + 0.3785096016103846, + 0.28510505479328946, + 0.2892185440566253, + 0.2736093880856945, + 0.26523948173760975, + 0.3137283352020904, + 0.2725189388899371, + 0.32796225810971624, + 0.38747303487856755, + 0.18592523980802783, + 0.37927873259934597, + 0.2859392500380301, + 0.30946405912404007, + 0.25965034382395513, + 0.29696996841461676, + 0.34728696266323694, + 0.3085384327962726, + 0.18571545487167987, + 0.29705082879205746, + 0.30482174577876286, + 0.26139791505978166, + 0.3777876811851625, + 0.3710650328913231, + 0.3649982470169111, + 0.3581941809719973, + 0.2303511072443371, + 0.1776536522625104, + 0.25825459982925403, + 0.15656877524560808, + 0.3838580620530663, + 0.15874833107191055, + 0.27902499634721306, + 0.3735870616322402, + 0.24906224777247715, + 0.3239354142693379, + 0.36344101282298713, + 0.31968431272224795, + 0.33951898392656354, + 0.3252813686850425, + 0.360147925184108, + 0.37469405452268373, + 0.23655208658653648, + 0.20157250015471587, + 0.3336845653786896, + 0.28767334851822857, + 0.3215780506971929, + 0.1631659974145519, + 0.28767002425986177, + 0.2152672517523564, + 0.3167799943976801, + 0.25732849529210583, + 0.3158322292857916, + 0.2286037098242375, + 0.18661783509329327, + 0.3147387978312024, + 0.3750757931835097, + 0.38343770272356503, + 0.37602027862185083, + 0.20634978085441472, + 0.23922799502623016, + 0.2255843996348758, + 0.16923413167844836, + 0.23542539307648988, + 0.21991297299240656, + 0.3005338876910365, + 0.18224866340983992, + 0.21105976437088284, + 0.2232189090240817, + 0.18983404907135307, + 0.1958968812928035, + 0.21288666465038797, + 0.3511527150610361, + 0.35198637100329655, + 0.3356726881935821, + 0.16984980821642817, + 0.1964059273528382, + 0.3310014193252063, + 0.2311543268050768, + 0.27006792716515626, + 0.23349225817106176, + 0.31895720483428974, + 0.21888401280569658, + 0.3727424545064526, + 0.38140343761376616, + 0.16802895573859522, + 0.388765755396952, + 0.37557312177929403, + 0.20723056065693723, + 0.16485524932146284, + 0.22925796032879897, + 0.2521901490691041, + 0.27153923218237025, + 0.3184673087347672, + 0.3450849029312454, + 0.2742950574456645, + 0.24506392886551098, + 0.3802758109332706, + 0.2247872909696365, + 0.2376724287872992, + 0.26181997309435534, + 0.2218035135856906, + 0.26328724649358437, + 0.17519346795410973, + 0.35847390914937427, + 0.31738375526149565, + 0.2895865092441895, + 0.23817376153362324, + 0.3362028516886514, + 0.3294816277872139, + 0.34641462918433136, + 0.24832366421482044, + 0.25374208963203637, + 0.19744223505908892, + 0.18224290207525573, + 0.18651987369400644, + 0.3865652566166972, + 0.17213180260552968, + 0.21381169773308406, + 0.2856069589156788, + 0.38803871889640934, + 0.2531408068331046, + 0.26692811418487994, + 0.17494838436504223, + 0.24093865527575542, + 0.3464489425503643, + 0.2432025494205251, + 0.19888713806341024, + 0.33725033625574663, + 0.22630540600863452, + 0.23698060796070003, + 0.29046232002962635, + 0.2934653191156421, + 0.24398479063094483, + 0.1745117934097369, + 0.17641453651394082, + 0.35705357788754144, + 0.2076936742948161, + 0.22412279504563046, + 0.3335759562025601, + 0.26993255893240325, + 0.23077206200911665, + 0.279765310111331, + 0.31438022162877344, + 0.35566541652837713, + 0.19673463167811528, + 0.3854675787294153, + 0.26036088754365927, + 0.17652554100343684, + 0.22676194317184348, + 0.2402072514992675, + 0.17814168354631366, + 0.33657161702884875, + 0.32697320055580925, + 0.28178616574679194, + 0.34037783276984945, + 0.15911624742065572, + 0.25777238802209024, + 0.30430483033254696, + 0.20644232897452414, + 0.17629242786920554, + 0.39156844164260596, + 0.1642823264469592, + 0.2769163591887524, + 0.3233416715260856, + 0.22597004113169938, + 0.38481346756009743, + 0.31381392185058465, + 0.3398586522361003, + 0.3463380088577016, + 0.21356530186645503, + 0.18955651402396642, + 0.32329610271633585, + 0.19433310922472202, + 0.31917053400543516, + 0.199401819729036, + 0.16798370784128488, + 0.15639604736671028, + 0.20587644069940528, + 0.2869198364304095, + 0.20479840136463442, + 0.3186025648698917, + 0.31458285693586097, + 0.3167988587479358, + 0.28713933660594093, + 0.2114648201484754, + 0.1603806363548241, + 0.21261166162314524, + 0.3244280751543127, + 0.3048895346884136, + 0.2784556741259043, + 0.2664344567653042, + 0.3678068818813332, + 0.3720500696495974, + 0.28699245876214685, + 0.2900213826728949, + 0.21554205286610453, + 0.23389840493771777, + 0.20883901567446356, + 0.3025487497834819, + 0.1876082421861702, + 0.22325054144743472, + 0.37437087651657774, + 0.37334795742367427, + 0.2735068274617135, + 0.3147978041987528, + 0.16774060880700448, + 0.213259956244228, + 0.17049781336352457, + 0.1633504208398174, + 0.3266132432649767, + 0.27075179354911616, + 0.36468168620122765, + 0.3516386375778773, + 0.3468426203395791, + 0.2982120755460387, + 0.2485173102851445, + 0.3541010674793308, + 0.3349179208213854, + 0.2316788684140731, + 0.2583389780749155, + 0.19644046898098497, + 0.21860631943250147, + 0.25315028284158514, + 0.30984454491544056, + 0.3051549380915863, + 0.3352367858151897, + 0.38670436468866143, + 0.22679189572777414, + 0.2776134341184557, + 0.30246843487541347, + 0.3261702367689988, + 0.3028984911347414, + 0.3293226015176785, + 0.1931798220763927, + 0.15854880961191478, + 0.2507406845007908, + 0.17143350513649314, + 0.31578670950995164, + 0.3448515550418757, + 0.29312028345851815, + 0.3751253025957897, + 0.1980325167634979, + 0.3721216749693601, + 0.21814151789919545, + 0.33035161614835695, + 0.1926331615790714, + 0.2515182134769442, + 0.2939096675855349, + 0.2991930488752858, + 0.160510986166676, + 0.31795783654704834, + 0.21074576638095732, + 0.2109509649891753, + 0.28701723818836267, + 0.19475446067227317, + 0.1793146975640941, + 0.27038727083594905, + 0.3543488235950061, + 0.2768790488015917, + 0.3262008029198388, + 0.38483834751585994, + 0.21882104041784162, + 0.19941226801323808, + 0.2459620289398806, + 0.25175077613634145, + 0.19362031826949105, + 0.2676998838272542, + 0.386585797843764, + 0.21657782508738302, + 0.2676171489448056, + 0.44947490995162537, + 0.5591609090068997, + 0.4512251161594112, + 0.6022668572687648, + 0.6289064238276637, + 0.40142989995633416, + 0.5696256042021006, + 0.6823571279410912, + 0.6161741749957503, + 0.6971485342601813, + 0.6312644394987591, + 0.4695021747311386, + 0.49189078991531027, + 0.5819625216175495, + 0.4726411322518219, + 0.40186875224321406, + 0.5335369011553159, + 0.6614419455797806, + 0.3991516135304827, + 0.5346948765745851, + 0.5478781826736647, + 0.6604940635259289, + 0.565575667380855, + 0.5842895267660978, + 0.6891093261442647, + 0.4560370214311059, + 0.4071470217114493, + 0.7097517299246855, + 0.440287176821705, + 0.668839978071039, + 0.5276898057962057, + 0.6867605133095795, + 0.5327093962037635, + 0.5554201691004736, + 0.41140491172014054, + 0.6182976177526252, + 0.5918801472606847, + 0.5365972464636941, + 0.4736186175127586, + 0.4839711727550435, + 0.6834844918395795, + 0.5705893109502786, + 0.4634260639211208, + 0.6821082706781397, + 0.5772222758766763, + 0.5508860761419743, + 0.5272830210125103, + 0.44334901872493915, + 0.5908179498534823, + 0.49326058018419067, + 0.42742484494223276, + 0.6894273870201801, + 0.6615200749698107, + 0.5677245505800758, + 0.5797376827072456, + 0.6810576341854881, + 0.6638765286103255, + 0.6629283890563611, + 0.45286014034125743, + 0.4322948039406841, + 0.7029567433555095, + 0.48806516996010707, + 0.6497598426237665, + 0.5561856171789313, + 0.42190359783440645, + 0.7134227645178497, + 0.4120504957662863, + 0.6291763938209083, + 0.6801220406117044, + 0.4272823909559493, + 0.639030312182473, + 0.5001545616121468, + 0.42418604274725286, + 0.42467341290990657, + 0.7156505118188439, + 0.40430726596841965, + 0.7079955659219375, + 0.42323136908612, + 0.5007637995841799, + 0.5060786132249315, + 0.3984194722541386, + 0.5317350365584397, + 0.504321534389612, + 0.5775251508887682, + 0.6013911463582547, + 0.4529199230221624, + 0.4589297217728195, + 0.4133809199137971, + 0.6256442215965026, + 0.4761954544083511, + 0.5858029253655195, + 0.4413783470095903, + 0.6208500178017827, + 0.6456836104205455, + 0.6813235549737258, + 0.6262714416708633, + 0.5340213479226078, + 0.5852211175279595, + 0.6868323973458574, + 0.4693561086696458, + 0.439494770332283, + 0.4540854882000879, + 0.5208807939681952, + 0.5177766268849695, + 0.7146602030053812, + 0.6752661658715393, + 0.5029316470818178, + 0.6148870893143848, + 0.3964672590923258, + 0.5173094382255445, + 0.5451642352187374, + 0.5537180142893531, + 0.486785558758239, + 0.4774270636440513, + 0.5803828481307851, + 0.45353306487716194, + 0.49080039756660204, + 0.41028751459297663, + 0.6221534559515846, + 0.6196171281679431, + 0.5938007968568193, + 0.6841109232152008, + 0.4316482733907302, + 0.5143138017009365, + 0.6810128339201258, + 0.6231381029718905, + 0.40249938838480304, + 0.4666016279286467, + 0.6066667375342083, + 0.6451527899120342, + 0.4586943199085084, + 0.502273971541784, + 0.7073321904767944, + 0.6695317139266806, + 0.6474071579493014, + 0.4349465716271802, + 0.6057546762224839, + 0.4401722075596667, + 0.4046559402444609, + 0.5339365119950445, + 0.5035856869909587, + 0.4178003833690501, + 0.4514142965792603, + 0.6958885739980261, + 0.6459519578120111, + 0.49647988745392424, + 0.4314922806842084, + 0.43725876312470435, + 0.4820706779535406, + 0.5929763021471892, + 0.7094813189599081, + 0.6097609977143543, + 0.6156707852293652, + 0.6292867256774927, + 0.5258998754071731, + 0.7011115093973981, + 0.6412738937232755, + 0.4468872531978568, + 0.48637679865448336, + 0.5242908122849039, + 0.5169367676915242, + 0.6327657436107508, + 0.6860580717945381, + 0.4130869824980044, + 0.46421892353214067, + 0.5122340792846338, + 0.5651105459294855, + 0.5467828623960378, + 0.46114250852395033, + 0.49416736973101794, + 0.5493934563887548, + 0.6599963916687159, + 0.4233038462483555, + 0.4618611791973517, + 0.45757412593382024, + 0.619585084062036, + 0.5209058712957351, + 0.7064061975121935, + 0.4818838874028891, + 0.4691890953528288, + 0.41049222258268886, + 0.5518594118538349, + 0.46148637397980874, + 0.6848209099746994, + 0.43127535099409564, + 0.7087857449507365, + 0.5180619286772945, + 0.5500902937780852, + 0.6477160115201758, + 0.5639255430931001, + 0.46621972532988076, + 0.6528057326286821, + 0.47800922244967214, + 0.6310369227981549, + 0.4512976203787316, + 0.43632149095380085, + 0.4275687772091572, + 0.6214699340639009, + 0.42993475007706466, + 0.5465141877983528, + 0.5806573405895895, + 0.617853868810441, + 0.529565611308054, + 0.5099644572505408, + 0.6201217047240281, + 0.6118275713955594, + 0.6915908513328297, + 0.44246291370401414, + 0.7075589513850595, + 0.5790291126162145, + 0.5400585295307696, + 0.6638989854664977, + 0.6018266088661488, + 0.710534881512412, + 0.6977184025600696, + 0.5930889183755229, + 0.5806871975700987, + 0.5458616189536665, + 0.5466648095508845, + 0.6487039081463881, + 0.6745893722594508, + 0.7022136081632885, + 0.40414995792160524, + 0.5097890729643131, + 0.5699896856747952, + 0.47951250563740144, + 0.4394409638181534, + 0.4202057320800722, + 0.5473899817175893, + 0.6975058334615472, + 0.7070470395289747, + 0.6175650275875317, + 0.5988684084385467, + 0.5207615408152834, + 0.5936074937695042, + 0.5204933197950735, + 0.4450726348045054, + 0.513742366791507, + 0.4463927336726016, + 0.7106461944245717, + 0.6666714464924917, + 0.49100111389455803, + 0.5857529411954137, + 0.5574157993904207, + 0.5376993150876198, + 0.6318084229082579, + 0.6724122842909428, + 0.43999461936634143, + 0.6096532858885285, + 0.5940872569011817, + 0.584926845297876, + 0.5489903189363265, + 0.6630869545390332, + 0.6300601077639902, + 0.7054685549036126, + 0.6021802794103465, + 0.454306374409995, + 0.5385161112719692, + 0.442851227344632, + 0.4949328344771222, + 0.6669965420309734, + 0.5226104484745957, + 0.5874435499212234, + 0.42304741807330176, + 0.5870818540038869, + 0.5720214007666715, + 0.7157718209230017, + 0.5306431935340286, + 0.4591219234221998, + 0.6132218846525878, + 0.6499388856085813, + 0.4217152617364599, + 0.5677521948824005, + 0.6455086420578564, + 0.629872648152794, + 0.6257455578146016, + 0.5054893714539292, + 0.6864986530237951, + 0.581644297084422, + 0.6077451242385874, + 0.5744534172452361, + 0.6990538909652502, + 0.5112043443979075, + 0.45739927962572174, + 0.5133459299901999, + 0.6820496425477098, + 0.5002482555756131, + 0.558000910958212, + 0.5936534060349853, + 0.43796882943094484, + 0.4352986646174859, + 0.6505568052596136, + 0.6428723804802239, + 0.550881659307026, + 0.5487687486322455, + 0.4977844226021937, + 0.6811339421955918, + 0.49371522834299375, + 0.5221764662010286, + 0.5240207110840116, + 0.39810556815079606, + 0.5263153484142609, + 0.5415564866162389, + 0.45154377818072483, + 0.4708169766001077, + 0.4971009439975731, + 0.4153751129612154, + 0.6724445600510189, + 0.4067099643607768, + 0.666107940509429, + 0.43155785715427813, + 0.4039590655415924, + 0.6998930022168117, + 0.5401708515529049, + 0.636152940593175, + 0.7133112442164784, + 0.531303819340117, + 0.591874212290335, + 0.6936865419105636, + 0.7014424980719549, + 0.39693420521526174, + 0.48568752838870294, + 0.42849941420729715, + 0.6015751879281552, + 0.6722468491923429, + 0.5568312014553103, + 0.6870506717774534, + 0.561264843810348, + 0.4089680322761353, + 0.5579955027321857, + 0.5298013059067621, + 0.5574656615622855, + 0.6713436242627624, + 0.47746375643337924, + 0.4103826656251715, + 0.4548327619944813, + 0.4130824207462302, + 0.5082341872317329, + 0.5758695147868413, + 0.566516679654997, + 0.6002950020913164, + 0.7099348697283616, + 0.580108521689847, + 0.5978281874064648, + 0.42853152349639956, + 0.5542353166119592, + 0.6580019807282187, + 0.6545492028504538, + 0.4312279372843846, + 0.41971902376805387, + 0.4774697529252618, + 0.5449494416978136, + 0.45419216805801077, + 0.48408834436167375, + 0.4617755752183541, + 0.5396234006943657, + 0.6765757336859182, + 0.40482918583776456, + 0.4525025671728369, + 0.6047668348987515, + 0.6717759475926002, + 0.4823478316686448, + 0.45493871790270374, + 0.5503619528526246, + 0.4064189828908995, + 0.49463311694058515, + 0.5911830869580648, + 0.6413702377880045, + 0.6566160590444658, + 0.4072961022260736, + 0.6133008939304667, + 0.5969452761175253, + 0.4462181060379007, + 0.6670554257410131, + 0.7148346391001634, + 0.613884143470564, + 0.4143619867718291, + 0.6397626668303221, + 0.6777197365045213, + 0.6930594673754261, + 0.5395050432868512, + 0.4364620904346789, + 0.644167251511654, + 0.6437440474491639, + 0.6284831894986016, + 0.5649148398354297, + 0.3989574525375489, + 0.6276842644582152, + 0.48334837280106246, + 0.5984665658186303, + 0.6098352711744552, + 0.640968422874308, + 0.49470653731964964, + 0.5155980220495899, + 0.6447257585474435, + 0.5031490040470481, + 0.5241823291645659, + 0.6811553284594838, + 0.6122903850487436, + 0.5111634127267949, + 0.675526024743003, + 0.6877158999282644, + 0.5043252621169627, + 0.5441120116654827, + 0.5766138525694984, + 0.4324555264169152, + 0.7029157821823, + 0.6146880198250669, + 0.6095762824095943, + 0.454614557126627, + 0.4127452528353851, + 0.6293428071274054, + 0.40800069256150245, + 0.3976145912624218, + 0.6384093253004592, + 0.6624710341660924, + 0.5350926105572095, + 0.4408323103029471, + 0.6307870932898341, + 0.666509078016772, + 0.5087724734644257, + 0.5073209188015815, + 0.48223418786815136, + 0.668003809913837, + 0.500663191624142, + 0.48806500501703787, + 0.4858990130166929, + 0.6326159082877396, + 0.6961964042057878, + 0.410435888116119, + 0.4347320460465639, + 0.5940176583645058, + 0.6238091616564779, + 0.6926165202144736, + 0.6058732755859165, + 0.6515315673071016, + 0.4238537045349452, + 0.46454152056058506, + 0.47988623174615685, + 0.6027975819375568, + 0.4104223481979623, + 0.5143988388319829, + 0.4831743197439597, + 0.4980832309632889, + 0.617897554824377, + 0.39627262353974946, + 0.6224973351858507, + 0.40144716992323226, + 0.6673423612035114, + 0.6021243161793206, + 0.47648236131256294, + 0.7093440073230833, + 0.5704971175375045, + 0.5750745290180266, + 0.606339252115618, + 0.49195823378976034, + 0.5442597967203218, + 0.6774360731305322, + 0.509446038415213, + 0.46122539415670705, + 0.4277045995611829, + 0.4071871855047354, + 0.5924558632920638, + 0.4908539669013738, + 0.6927777037074769, + 0.45916372456492055, + 0.5687194114173424, + 0.43580394800788075, + 0.6739547252503704, + 0.6920218963592493, + 0.49286512083346756, + 0.4887422553545062, + 0.39887312222336174, + 0.4026138372739265, + 0.6963889315585156, + 0.397764499216326, + 0.5269556727677694, + 0.40978521073317226, + 0.5589017399284142, + 0.6947180272497799, + 0.5719391948197924, + 0.5546625797013365, + 0.4491765484891208, + 0.637972159365281 + ], + "type": "scatter" + }, + { + "mode": "markers", + "name": "Expectation", + "x": [ + -4.375528139159007E-5 + ], + "y": [ + -0.058325846627932804 + ], + "type": "scatter" + }, + { + "fill": "toself", + "mode": "lines", + "name": "Mode", + "x": [ + 0.4178483805738874, + 0.4178483805738874, + 0.6762126815500766, + 0.6762126815500766, + 0.4178483805738874 + ], + "y": [ + 0.15624896603640903, + 0.393362968645088, + 0.393362968645088, + 0.15624896603640903, + 0.15624896603640903 + ], + "type": "scatter" + } + ], + "layout": { + "title": { + "text": "JPT" + }, + "xaxis": { + "title": { + "text": "relative_x" + } + }, + "yaxis": { + "title": { + "text": "relative_y" + } + }, + "template": { + "data": { + "histogram2dcontour": [ + { + "type": "histogram2dcontour", + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ] + } + ], + "choropleth": [ + { + "type": "choropleth", + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + } + ], + "histogram2d": [ + { + "type": "histogram2d", + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ] + } + ], + "heatmap": [ + { + "type": "heatmap", + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ] + } + ], + "heatmapgl": [ + { + "type": "heatmapgl", + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ] + } + ], + "contourcarpet": [ + { + "type": "contourcarpet", + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + } + ], + "contour": [ + { + "type": "contour", + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ] + } + ], + "surface": [ + { + "type": "surface", + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ] + } + ], + "mesh3d": [ + { + "type": "mesh3d", + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + } + ], + "scatter": [ + { + "marker": { + "line": { + "color": "#283442" + } + }, + "type": "scatter" + } + ], + "parcoords": [ + { + "type": "parcoords", + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + } + } + ], + "scatterpolargl": [ + { + "type": "scatterpolargl", + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + } + } + ], + "bar": [ + { + "error_x": { + "color": "#f2f5fa" + }, + "error_y": { + "color": "#f2f5fa" + }, + "marker": { + "line": { + "color": "rgb(17,17,17)", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "bar" + } + ], + "scattergeo": [ + { + "type": "scattergeo", + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + } + } + ], + "scatterpolar": [ + { + "type": "scatterpolar", + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + } + } + ], + "histogram": [ + { + "marker": { + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "histogram" + } + ], + "scattergl": [ + { + "marker": { + "line": { + "color": "#283442" + } + }, + "type": "scattergl" + } + ], + "scatter3d": [ + { + "type": "scatter3d", + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + } + } + ], + "scattermapbox": [ + { + "type": "scattermapbox", + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + } + } + ], + "scatterternary": [ + { + "type": "scatterternary", + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + } + } + ], + "scattercarpet": [ + { + "type": "scattercarpet", + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + } + } + ], + "carpet": [ + { + "aaxis": { + "endlinecolor": "#A2B1C6", + "gridcolor": "#506784", + "linecolor": "#506784", + "minorgridcolor": "#506784", + "startlinecolor": "#A2B1C6" + }, + "baxis": { + "endlinecolor": "#A2B1C6", + "gridcolor": "#506784", + "linecolor": "#506784", + "minorgridcolor": "#506784", + "startlinecolor": "#A2B1C6" + }, + "type": "carpet" + } + ], + "table": [ + { + "cells": { + "fill": { + "color": "#506784" + }, + "line": { + "color": "rgb(17,17,17)" + } + }, + "header": { + "fill": { + "color": "#2a3f5f" + }, + "line": { + "color": "rgb(17,17,17)" + } + }, + "type": "table" + } + ], + "barpolar": [ + { + "marker": { + "line": { + "color": "rgb(17,17,17)", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "barpolar" + } + ], + "pie": [ + { + "automargin": true, + "type": "pie" + } + ] + }, + "layout": { + "autotypenumbers": "strict", + "colorway": [ + "#636efa", + "#EF553B", + "#00cc96", + "#ab63fa", + "#FFA15A", + "#19d3f3", + "#FF6692", + "#B6E880", + "#FF97FF", + "#FECB52" + ], + "font": { + "color": "#f2f5fa" + }, + "hovermode": "closest", + "hoverlabel": { + "align": "left" + }, + "paper_bgcolor": "rgb(17,17,17)", + "plot_bgcolor": "rgb(17,17,17)", + "polar": { + "bgcolor": "rgb(17,17,17)", + "angularaxis": { + "gridcolor": "#506784", + "linecolor": "#506784", + "ticks": "" + }, + "radialaxis": { + "gridcolor": "#506784", + "linecolor": "#506784", + "ticks": "" + } + }, + "ternary": { + "bgcolor": "rgb(17,17,17)", + "aaxis": { + "gridcolor": "#506784", + "linecolor": "#506784", + "ticks": "" + }, + "baxis": { + "gridcolor": "#506784", + "linecolor": "#506784", + "ticks": "" + }, + "caxis": { + "gridcolor": "#506784", + "linecolor": "#506784", + "ticks": "" + } + }, + "coloraxis": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "colorscale": { + "sequential": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ], + "sequentialminus": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ], + "diverging": [ + [ + 0, + "#8e0152" + ], + [ + 0.1, + "#c51b7d" + ], + [ + 0.2, + "#de77ae" + ], + [ + 0.3, + "#f1b6da" + ], + [ + 0.4, + "#fde0ef" + ], + [ + 0.5, + "#f7f7f7" + ], + [ + 0.6, + "#e6f5d0" + ], + [ + 0.7, + "#b8e186" + ], + [ + 0.8, + "#7fbc41" + ], + [ + 0.9, + "#4d9221" + ], + [ + 1, + "#276419" + ] + ] + }, + "xaxis": { + "gridcolor": "#283442", + "linecolor": "#506784", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "#283442", + "automargin": true, + "zerolinewidth": 2 + }, + "yaxis": { + "gridcolor": "#283442", + "linecolor": "#506784", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "#283442", + "automargin": true, + "zerolinewidth": 2 + }, + "scene": { + "xaxis": { + "backgroundcolor": "rgb(17,17,17)", + "gridcolor": "#506784", + "linecolor": "#506784", + "showbackground": true, + "ticks": "", + "zerolinecolor": "#C8D4E3", + "gridwidth": 2 + }, + "yaxis": { + "backgroundcolor": "rgb(17,17,17)", + "gridcolor": "#506784", + "linecolor": "#506784", + "showbackground": true, + "ticks": "", + "zerolinecolor": "#C8D4E3", + "gridwidth": 2 + }, + "zaxis": { + "backgroundcolor": "rgb(17,17,17)", + "gridcolor": "#506784", + "linecolor": "#506784", + "showbackground": true, + "ticks": "", + "zerolinecolor": "#C8D4E3", + "gridwidth": 2 + } + }, + "shapedefaults": { + "line": { + "color": "#f2f5fa" + } + }, + "annotationdefaults": { + "arrowcolor": "#f2f5fa", + "arrowhead": 0, + "arrowwidth": 1 + }, + "geo": { + "bgcolor": "rgb(17,17,17)", + "landcolor": "rgb(17,17,17)", + "subunitcolor": "#506784", + "showland": true, + "showlakes": true, + "lakecolor": "rgb(17,17,17)" + }, + "title": { + "x": 0.05 + }, + "updatemenudefaults": { + "bgcolor": "#506784", + "borderwidth": 0 + }, + "sliderdefaults": { + "bgcolor": "#C8D4E3", + "borderwidth": 1, + "bordercolor": "rgb(17,17,17)", + "tickwidth": 0 + }, + "mapbox": { + "style": "dark" + } + } + } + }, + "config": { + "plotlyServerURL": "https://plot.ly" + } + }, + "text/html": "
    " + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "p_xy = model.marginal([relative_x, relative_y])\n", + "fig = go.Figure(p_xy.root.plot_2d(), p_xy.root.plotly_layout())\n", + "fig.show()" + ], + "metadata": { + "collapsed": false, + "ExecuteTime": { + "end_time": "2024-03-21T13:49:00.755911Z", + "start_time": "2024-03-21T13:48:59.575756Z" + } + }, + "id": "78161f8e4a14782e", + "execution_count": 12 + }, + { + "cell_type": "markdown", + "source": [ + "Let's look at the density of the relative x and y position of the robot with respect to the milk. We can see that he would like to access the object from the right front area." + ], + "metadata": { + "collapsed": false + }, + "id": "eaaf99db302255e0" + }, + { + "cell_type": "code", + "outputs": [ + { + "data": { + "application/vnd.plotly.v1+json": { + "data": [ + { + "hovertext": [ + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 0.7111846762867592", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 0.7111846762867592", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 0.7111846762867592", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 0.7111846762867592", + "Likelihood: 0.7111846762867592", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 0.7111846762867592", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 0.7111846762867592", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 1.5599843084222236", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 4.30291638024209", + "Likelihood: 0.7111846762867594", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 0.7111846762867594", + "Likelihood: 4.30291638024209", + "Likelihood: 2.2841215840198554", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 0.7111846762867594", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 4.30291638024209", + "Likelihood: 0.7111846762867594", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 0.7111846762867594", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 4.30291638024209", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 4.30291638024209", + "Likelihood: 0.7111846762867594", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 0.7111846762867594", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 4.30291638024209", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 4.30291638024209", + "Likelihood: 1.5599843084222238", + "Likelihood: 0.7111846762867594", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 0.7111846762867594", + "Likelihood: 0.7111846762867594", + "Likelihood: 1.5599843084222238", + "Likelihood: 0.7111846762867594", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.3196950565297552", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 2.1006911556372625", + "Likelihood: 0.7111846762867594", + "Likelihood: 1.5599843084222238", + "Likelihood: 0.7111846762867594", + "Likelihood: 0.7111846762867594", + "Likelihood: 2.2841215840198554", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 4.30291638024209", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 0.7111846762867594", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 0.7111846762867594", + "Likelihood: 1.5599843084222238", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 0.7111846762867594", + "Likelihood: 1.5599843084222238", + "Likelihood: 4.30291638024209", + "Likelihood: 0.7111846762867594", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 0.7111846762867594", + "Likelihood: 4.30291638024209", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 4.30291638024209", + "Likelihood: 1.5599843084222238", + "Likelihood: 4.30291638024209", + "Likelihood: 1.3196950565297552", + "Likelihood: 4.30291638024209", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 0.7111846762867594", + "Likelihood: 2.1006911556372625", + "Likelihood: 0.7111846762867594", + "Likelihood: 2.1006911556372625", + "Likelihood: 4.30291638024209", + "Likelihood: 0.7111846762867594", + "Likelihood: 1.3196950565297552", + "Likelihood: 4.30291638024209", + "Likelihood: 0.7111846762867594", + "Likelihood: 0.7111846762867594", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 0.7111846762867594", + "Likelihood: 2.1006911556372625", + "Likelihood: 4.30291638024209", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 4.30291638024209", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 0.7111846762867594", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 4.30291638024209", + "Likelihood: 0.7111846762867594", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 0.7111846762867594", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 0.7111846762867594", + "Likelihood: 2.1006911556372625", + "Likelihood: 4.30291638024209", + "Likelihood: 2.1006911556372625", + "Likelihood: 0.7111846762867594", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 2.1006911556372625", + "Likelihood: 4.30291638024209", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 0.7111846762867594", + "Likelihood: 1.5599843084222238", + "Likelihood: 0.7111846762867594", + "Likelihood: 2.1006911556372625", + "Likelihood: 0.7111846762867594", + "Likelihood: 4.30291638024209", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 0.7111846762867594", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 0.7111846762867594", + "Likelihood: 4.30291638024209", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 4.30291638024209", + "Likelihood: 0.7111846762867594", + "Likelihood: 0.7111846762867594", + "Likelihood: 1.5599843084222238", + "Likelihood: 0.7111846762867594", + "Likelihood: 1.5599843084222238", + "Likelihood: 4.30291638024209", + "Likelihood: 1.5599843084222238", + "Likelihood: 0.7111846762867594", + "Likelihood: 0.7111846762867594", + "Likelihood: 4.30291638024209", + "Likelihood: 0.7111846762867594", + "Likelihood: 4.30291638024209", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 0.7111846762867594", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 4.30291638024209", + "Likelihood: 1.5599843084222238", + "Likelihood: 4.30291638024209", + "Likelihood: 0.7111846762867594", + "Likelihood: 1.5599843084222238", + "Likelihood: 0.7111846762867594", + "Likelihood: 0.7111846762867594", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 4.30291638024209", + "Likelihood: 1.5599843084222238", + "Likelihood: 4.30291638024209", + "Likelihood: 0.7111846762867594", + "Likelihood: 4.30291638024209", + "Likelihood: 0.7111846762867594", + "Likelihood: 0.7111846762867594", + "Likelihood: 1.5599843084222238", + "Likelihood: 0.7111846762867594", + "Likelihood: 0.7111846762867594", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 4.30291638024209", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 4.30291638024209", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 4.30291638024209", + "Likelihood: 1.5599843084222238", + "Likelihood: 0.7111846762867594", + "Likelihood: 2.1006911556372625", + "Likelihood: 4.30291638024209", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.3196950565297552", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 4.30291638024209", + "Likelihood: 1.5599843084222238", + "Likelihood: 0.7111846762867594", + "Likelihood: 0.7111846762867594", + "Likelihood: 2.1006911556372625", + "Likelihood: 0.7111846762867594", + "Likelihood: 0.7111846762867594", + "Likelihood: 0.7111846762867594", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 0.7111846762867594", + "Likelihood: 1.5599843084222238", + "Likelihood: 0.7111846762867594", + "Likelihood: 4.30291638024209", + "Likelihood: 2.1006911556372625", + "Likelihood: 4.30291638024209", + "Likelihood: 2.1006911556372625", + "Likelihood: 4.30291638024209", + "Likelihood: 1.5599843084222238", + "Likelihood: 4.30291638024209", + "Likelihood: 0.7111846762867594", + "Likelihood: 0.7111846762867594", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.2841215840198554", + "Likelihood: 2.1006911556372625", + "Likelihood: 4.30291638024209", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 4.30291638024209", + "Likelihood: 2.1006911556372625", + "Likelihood: 4.30291638024209", + "Likelihood: 0.7111846762867594", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 4.30291638024209", + "Likelihood: 0.7111846762867594", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 0.7111846762867594", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 0.7111846762867594", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 0.7111846762867594", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 4.30291638024209", + "Likelihood: 2.1006911556372625", + "Likelihood: 0.7111846762867594", + "Likelihood: 1.5599843084222238", + "Likelihood: 4.30291638024209", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 4.30291638024209", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 0.7111846762867594", + "Likelihood: 4.30291638024209", + "Likelihood: 2.2841215840198554", + "Likelihood: 4.30291638024209", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 0.7111846762867594", + "Likelihood: 4.30291638024209", + "Likelihood: 2.1006911556372625", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 1.5599843084222238", + "Likelihood: 4.30291638024209", + "Likelihood: 1.5599843084222238", + "Likelihood: 4.30291638024209", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 0.7111846762867594", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 4.30291638024209", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 4.30291638024209", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 0.7111846762867594", + "Likelihood: 2.1006911556372625", + "Likelihood: 0.7111846762867594", + "Likelihood: 1.5599843084222238", + "Likelihood: 4.30291638024209", + "Likelihood: 1.5599843084222238", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 1.5599843084222238", + "Likelihood: 4.30291638024209", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 0.7111846762867594", + "Likelihood: 0.7111846762867594", + "Likelihood: 2.1006911556372625", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 2.1006911556372625", + "Likelihood: 0.7111846762867594", + "Likelihood: 0.7111846762867594", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 1.5599843084222238", + "Likelihood: 0.7111846762867594", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.2841215840198554", + "Likelihood: 0.7111846762867594", + "Likelihood: 4.30291638024209", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 4.30291638024209", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 0.7111846762867594", + "Likelihood: 0.7111846762867594", + "Likelihood: 1.5599843084222238", + "Likelihood: 4.30291638024209", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.3196950565297552", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 0.7111846762867594", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.2841215840198554", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 0.7111846762867594", + "Likelihood: 0.7111846762867594", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 0.7111846762867594", + "Likelihood: 0.7111846762867594", + "Likelihood: 0.7111846762867594", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 0.7111846762867594", + "Likelihood: 1.5599843084222238", + "Likelihood: 0.7111846762867594", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.3196950565297552", + "Likelihood: 0.7111846762867594", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 1.5599843084222238", + "Likelihood: 0.7111846762867594", + "Likelihood: 4.30291638024209", + "Likelihood: 1.5599843084222238", + "Likelihood: 0.7111846762867594", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 4.30291638024209", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 4.30291638024209", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 4.30291638024209", + "Likelihood: 2.2841215840198554", + "Likelihood: 4.30291638024209", + "Likelihood: 0.7111846762867594", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 0.7111846762867594", + "Likelihood: 0.7111846762867594", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 0.7111846762867594", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 0.7111846762867594", + "Likelihood: 1.5599843084222238", + "Likelihood: 4.30291638024209", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.3196950565297552", + "Likelihood: 4.30291638024209", + "Likelihood: 1.5599843084222238", + "Likelihood: 0.7111846762867594", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 4.30291638024209", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 4.30291638024209", + "Likelihood: 0.7111846762867594", + "Likelihood: 4.30291638024209", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 4.30291638024209", + "Likelihood: 2.1006911556372625", + "Likelihood: 0.7111846762867594", + "Likelihood: 1.5599843084222238", + "Likelihood: 0.7111846762867594", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 4.30291638024209", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 0.7111846762867594", + "Likelihood: 4.30291638024209", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 4.30291638024209", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 0.7111846762867594", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.3196950565297552", + "Likelihood: 1.3196950565297552", + "Likelihood: 4.30291638024209", + "Likelihood: 1.5599843084222238", + "Likelihood: 0.7111846762867594", + "Likelihood: 0.7111846762867594", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 0.7111846762867594", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 4.30291638024209", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 4.30291638024209", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 0.7111846762867594", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 0.7111846762867594", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 0.7111846762867594", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 0.7111846762867594", + "Likelihood: 4.30291638024209", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.3196950565297552", + "Likelihood: 4.30291638024209", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 4.30291638024209", + "Likelihood: 1.5599843084222238", + "Likelihood: 4.30291638024209", + "Likelihood: 0.7111846762867594", + "Likelihood: 1.5599843084222238", + "Likelihood: 0.7111846762867594", + "Likelihood: 4.30291638024209", + "Likelihood: 0.7111846762867594", + "Likelihood: 1.5599843084222238", + "Likelihood: 4.30291638024209", + "Likelihood: 1.5599843084222238", + "Likelihood: 0.7111846762867594", + "Likelihood: 1.5599843084222238", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 1.5599843084222238", + "Likelihood: 4.30291638024209", + "Likelihood: 1.5599843084222238", + "Likelihood: 0.7111846762867594", + "Likelihood: 1.5599843084222238", + "Likelihood: 0.7111846762867594", + "Likelihood: 2.1006911556372625", + "Likelihood: 0.7111846762867594", + "Likelihood: 4.30291638024209", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 4.30291638024209", + "Likelihood: 2.1006911556372625", + "Likelihood: 4.30291638024209", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 0.7111846762867594", + "Likelihood: 4.30291638024209", + "Likelihood: 1.5599843084222238", + "Likelihood: 4.30291638024209", + "Likelihood: 0.7111846762867594", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 0.7111846762867594", + "Likelihood: 4.30291638024209", + "Likelihood: 0.7111846762867594", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 4.30291638024209", + "Likelihood: 1.5599843084222238", + "Likelihood: 4.30291638024209", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 0.7111846762867594", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 4.30291638024209", + "Likelihood: 1.5599843084222238", + "Likelihood: 4.30291638024209", + "Likelihood: 2.1006911556372625", + "Likelihood: 4.30291638024209", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 4.30291638024209", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 0.7111846762867594", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 4.30291638024209", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 4.30291638024209", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 4.30291638024209", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 0.7111846762867594", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 0.7111846762867594", + "Likelihood: 0.7111846762867594", + "Likelihood: 0.7111846762867594", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 0.7111846762867594", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 0.7111846762867594", + "Likelihood: 1.5599843084222238", + "Likelihood: 4.30291638024209", + "Likelihood: 2.1006911556372625", + "Likelihood: 0.7111846762867594", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 4.30291638024209", + "Likelihood: 1.5599843084222238", + "Likelihood: 4.30291638024209", + "Likelihood: 1.5599843084222238", + "Likelihood: 4.30291638024209", + "Likelihood: 1.5599843084222238", + "Likelihood: 4.30291638024209", + "Likelihood: 1.5599843084222238", + "Likelihood: 4.30291638024209", + "Likelihood: 0.7111846762867594", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 0.7111846762867594", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 0.7111846762867594", + "Likelihood: 0.7111846762867594", + "Likelihood: 1.5599843084222238", + "Likelihood: 0.7111846762867594", + "Likelihood: 0.7111846762867594", + "Likelihood: 2.1006911556372625", + "Likelihood: 0.7111846762867594", + "Likelihood: 1.3196950565297552", + "Likelihood: 1.3196950565297552", + "Likelihood: 1.3196950565297552", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 0.7111846762867594", + "Likelihood: 0.7111846762867594", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 0.7111846762867594", + "Likelihood: 1.5599843084222238", + "Likelihood: 4.30291638024209", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 0.7111846762867594", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 2.1006911556372625", + "Likelihood: 0.7111846762867594", + "Likelihood: 0.7111846762867594", + "Likelihood: 4.30291638024209", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 0.7111846762867594", + "Likelihood: 2.2841215840198554", + "Likelihood: 0.7111846762867594", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 0.7111846762867594", + "Likelihood: 2.1006911556372625", + "Likelihood: 0.7111846762867594", + "Likelihood: 1.5599843084222238", + "Likelihood: 0.7111846762867594", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 0.7111846762867594", + "Likelihood: 4.30291638024209", + "Likelihood: 0.7111846762867594", + "Likelihood: 0.7111846762867594", + "Likelihood: 0.7111846762867594", + "Likelihood: 0.7111846762867594", + "Likelihood: 0.7111846762867594", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 0.7111846762867594", + "Likelihood: 4.30291638024209", + "Likelihood: 2.1006911556372625", + "Likelihood: 0.7111846762867594", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.2841215840198554", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 0.7111846762867594", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.2841215840198554", + "Likelihood: 1.5599843084222238", + "Likelihood: 4.30291638024209", + "Likelihood: 0.7111846762867594", + "Likelihood: 2.1006911556372625", + "Likelihood: 0.7111846762867594", + "Likelihood: 1.3196950565297552", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 4.30291638024209", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 4.30291638024209", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 4.30291638024209", + "Likelihood: 0.7111846762867594", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.2841215840198554", + "Likelihood: 0.7111846762867594", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 0.7111846762867594", + "Likelihood: 1.5599843084222238", + "Likelihood: 4.30291638024209", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.3196950565297552", + "Likelihood: 0.7111846762867594", + "Likelihood: 1.5599843084222238", + "Likelihood: 0.7111846762867594", + "Likelihood: 1.5599843084222238", + "Likelihood: 4.30291638024209", + "Likelihood: 0.7111846762867594", + "Likelihood: 1.5599843084222238", + "Likelihood: 0.7111846762867594", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 4.30291638024209", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 0.7111846762867594", + "Likelihood: 2.1006911556372625", + "Likelihood: 4.30291638024209", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 0.7111846762867594", + "Likelihood: 4.30291638024209", + "Likelihood: 2.1006911556372625", + "Likelihood: 4.30291638024209", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 0.7111846762867594", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 0.7111846762867594", + "Likelihood: 0.7111846762867594", + "Likelihood: 4.30291638024209", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 0.7111846762867594", + "Likelihood: 0.7111846762867594", + "Likelihood: 4.30291638024209", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 4.30291638024209", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 0.7111846762867594", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 4.30291638024209", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 4.30291638024209", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 0.7111846762867594", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 4.30291638024209", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 4.30291638024209", + "Likelihood: 2.2841215840198554", + "Likelihood: 0.7111846762867594", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 0.7111846762867594", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 0.7111846762867594", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 0.7111846762867594", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 0.7111846762867594", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 0.7111846762867594", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 0.7111846762867594", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 0.7111846762867594", + "Likelihood: 0.7111846762867594", + "Likelihood: 4.30291638024209", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 0.7111846762867594", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 1.5599843084222238", + "Likelihood: 4.30291638024209", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.3196950565297552", + "Likelihood: 4.30291638024209", + "Likelihood: 1.5599843084222238", + "Likelihood: 0.7111846762867594", + "Likelihood: 1.5599843084222238", + "Likelihood: 4.30291638024209", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 0.7111846762867594", + "Likelihood: 0.7111846762867594", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 4.30291638024209", + "Likelihood: 0.7111846762867594", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 4.30291638024209", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 4.30291638024209", + "Likelihood: 2.2841215840198554", + "Likelihood: 1.5599843084222238", + "Likelihood: 4.30291638024209", + "Likelihood: 0.7111846762867594", + "Likelihood: 0.7111846762867594", + "Likelihood: 0.7111846762867594", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 0.7111846762867594", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 4.30291638024209", + "Likelihood: 2.1006911556372625", + "Likelihood: 0.7111846762867594", + "Likelihood: 2.2841215840198554", + "Likelihood: 0.7111846762867594", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 0.7111846762867594", + "Likelihood: 0.7111846762867594", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 0.7111846762867594", + "Likelihood: 1.5599843084222238", + "Likelihood: 0.7111846762867594", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 0.7111846762867594", + "Likelihood: 2.1006911556372625", + "Likelihood: 4.30291638024209", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 0.7111846762867594", + "Likelihood: 0.7111846762867594", + "Likelihood: 4.30291638024209", + "Likelihood: 0.7111846762867594", + "Likelihood: 2.1006911556372625", + "Likelihood: 4.30291638024209", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 0.7111846762867594", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 0.7111846762867594", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 4.30291638024209", + "Likelihood: 1.5599843084222238", + "Likelihood: 0.7111846762867594", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 4.30291638024209", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 0.7111846762867594", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 0.7111846762867594", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 4.30291638024209", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 4.30291638024209", + "Likelihood: 1.5599843084222238", + "Likelihood: 4.30291638024209", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 0.7111846762867594", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.2841215840198554", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 4.30291638024209", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 4.30291638024209", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 0.7111846762867594", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 4.30291638024209", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 4.30291638024209", + "Likelihood: 0.7111846762867594", + "Likelihood: 4.30291638024209", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 0.7111846762867594", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 0.7111846762867594", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 1.5599843084222238", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 0.7111846762867594", + "Likelihood: 1.5599843084222238", + "Likelihood: 4.30291638024209", + "Likelihood: 2.1006911556372625", + "Likelihood: 0.7111846762867594", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 0.7111846762867594", + "Likelihood: 4.30291638024209", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 4.30291638024209", + "Likelihood: 1.5599843084222238", + "Likelihood: 4.30291638024209", + "Likelihood: 0.7111846762867594", + "Likelihood: 2.1006911556372625", + "Likelihood: 0.7111846762867594", + "Likelihood: 4.30291638024209", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 0.7111846762867594", + "Likelihood: 2.1006911556372625", + "Likelihood: 4.30291638024209", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 0.7111846762867594", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 0.7111846762867594", + "Likelihood: 0.7111846762867594", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 4.30291638024209", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.3196950565297552", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 0.7111846762867594", + "Likelihood: 0.7111846762867594", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 0.7111846762867594", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.2841215840198554", + "Likelihood: 1.3196950565297552", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 0.7111846762867594", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.1006911556372625", + "Likelihood: 4.30291638024209", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 0.7111846762867594", + "Likelihood: 0.7111846762867594", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 4.30291638024209", + "Likelihood: 0.7111846762867594", + "Likelihood: 2.1006911556372625", + "Likelihood: 4.30291638024209", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.2841215840198554", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.3196950565297552", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 4.30291638024209", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 1.5599843084222238", + "Likelihood: 2.2841215840198554", + "Likelihood: 2.2841215840198554", + "Likelihood: 2.2841215840198554", + "Likelihood: 2.2841215840198554", + "Likelihood: 2.2841215840198554", + "Likelihood: 2.2841215840198554", + "Likelihood: 2.2841215840198554", + "Likelihood: 2.2841215840198554", + "Likelihood: 2.2841215840198554", + "Likelihood: 2.2841215840198554", + "Likelihood: 2.2841215840198554", + "Likelihood: 2.2841215840198554", + "Likelihood: 2.2841215840198554", + "Likelihood: 2.2841215840198554", + "Likelihood: 2.2841215840198554", + "Likelihood: 2.2841215840198554", + "Likelihood: 2.2841215840198554", + "Likelihood: 2.2841215840198554", + "Likelihood: 2.2841215840198554", + "Likelihood: 2.2841215840198554", + "Likelihood: 2.2841215840198554", + "Likelihood: 2.2841215840198554", + "Likelihood: 2.2841215840198554", + "Likelihood: 2.2841215840198554", + "Likelihood: 2.2841215840198554", + "Likelihood: 2.2841215840198554", + "Likelihood: 2.2841215840198554", + "Likelihood: 2.2841215840198554", + "Likelihood: 2.2841215840198554", + "Likelihood: 2.2841215840198554", + "Likelihood: 2.2841215840198554", + "Likelihood: 2.2841215840198554", + "Likelihood: 2.2841215840198554", + "Likelihood: 2.2841215840198554", + "Likelihood: 2.2841215840198554", + "Likelihood: 2.2841215840198554", + "Likelihood: 2.2841215840198554", + "Likelihood: 2.2841215840198554", + "Likelihood: 2.2841215840198554", + "Likelihood: 2.2841215840198554", + "Likelihood: 2.2841215840198554", + "Likelihood: 2.2841215840198554", + "Likelihood: 2.2841215840198554", + "Likelihood: 2.2841215840198554", + "Likelihood: 2.2841215840198554", + "Likelihood: 2.2841215840198554", + "Likelihood: 2.2841215840198554", + "Likelihood: 2.2841215840198554", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 4.30291638024209", + "Likelihood: 1.389506479350503", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.389506479350503", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.389506479350503", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.389506479350503", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.389506479350503", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.389506479350503", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.389506479350503", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.389506479350503", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.389506479350503", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.389506479350503", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.389506479350503", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.389506479350503", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.389506479350503", + "Likelihood: 1.389506479350503", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.389506479350503", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.389506479350503", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.389506479350503", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.389506479350503", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.389506479350503", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.389506479350503", + "Likelihood: 1.389506479350503", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.389506479350503", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.389506479350503", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.389506479350503", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.389506479350503", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.389506479350503", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.389506479350503", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.389506479350503", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.389506479350503", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.389506479350503", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.389506479350503", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.389506479350503", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.389506479350503", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.389506479350503", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.389506479350503", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.389506479350503", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.389506479350503", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.389506479350503", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.389506479350503", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.389506479350503", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.389506479350503", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.389506479350503", + "Likelihood: 1.389506479350503", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.389506479350503", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.389506479350503", + "Likelihood: 1.389506479350503", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.389506479350503", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.389506479350503", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.389506479350503", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.389506479350503", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.389506479350503", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.389506479350503", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.389506479350503", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.389506479350503", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625", + "Likelihood: 1.389506479350503", + "Likelihood: 2.1006911556372625", + "Likelihood: 2.1006911556372625" + ], + "marker": { + "color": [ + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 0.7111846762867592, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 0.7111846762867592, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 0.7111846762867592, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 0.7111846762867592, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 0.7111846762867592, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 0.7111846762867592, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 0.7111846762867592, + 0.7111846762867592, + 1.5599843084222236, + 1.5599843084222236, + 0.7111846762867592, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 0.7111846762867592, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 0.7111846762867592, + 0.7111846762867592, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 0.7111846762867592, + 1.5599843084222236, + 0.7111846762867592, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 0.7111846762867592, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 0.7111846762867592, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 0.7111846762867592, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 0.7111846762867592, + 1.5599843084222236, + 0.7111846762867592, + 1.5599843084222236, + 0.7111846762867592, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 0.7111846762867592, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 0.7111846762867592, + 1.5599843084222236, + 0.7111846762867592, + 0.7111846762867592, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 0.7111846762867592, + 1.5599843084222236, + 0.7111846762867592, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 0.7111846762867592, + 1.5599843084222236, + 0.7111846762867592, + 0.7111846762867592, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 0.7111846762867592, + 1.5599843084222236, + 0.7111846762867592, + 1.5599843084222236, + 1.5599843084222236, + 0.7111846762867592, + 1.5599843084222236, + 0.7111846762867592, + 1.5599843084222236, + 1.5599843084222236, + 0.7111846762867592, + 0.7111846762867592, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 0.7111846762867592, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 0.7111846762867592, + 1.5599843084222236, + 0.7111846762867592, + 1.5599843084222236, + 1.5599843084222236, + 0.7111846762867592, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 0.7111846762867592, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 0.7111846762867592, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 0.7111846762867592, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 0.7111846762867592, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 0.7111846762867592, + 0.7111846762867592, + 0.7111846762867592, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 0.7111846762867592, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 0.7111846762867592, + 1.5599843084222236, + 1.5599843084222236, + 0.7111846762867592, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 0.7111846762867592, + 1.5599843084222236, + 0.7111846762867592, + 1.5599843084222236, + 0.7111846762867592, + 0.7111846762867592, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 0.7111846762867592, + 1.5599843084222236, + 0.7111846762867592, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 0.7111846762867592, + 1.5599843084222236, + 1.5599843084222236, + 0.7111846762867592, + 1.5599843084222236, + 0.7111846762867592, + 1.5599843084222236, + 1.5599843084222236, + 0.7111846762867592, + 1.5599843084222236, + 0.7111846762867592, + 0.7111846762867592, + 1.5599843084222236, + 1.5599843084222236, + 0.7111846762867592, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 0.7111846762867592, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 0.7111846762867592, + 1.5599843084222236, + 1.5599843084222236, + 0.7111846762867592, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 0.7111846762867592, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 0.7111846762867592, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 0.7111846762867592, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 0.7111846762867592, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 0.7111846762867592, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 0.7111846762867592, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 0.7111846762867592, + 0.7111846762867592, + 1.5599843084222236, + 0.7111846762867592, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 0.7111846762867592, + 0.7111846762867592, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 0.7111846762867592, + 1.5599843084222236, + 1.5599843084222236, + 0.7111846762867592, + 0.7111846762867592, + 1.5599843084222236, + 1.5599843084222236, + 0.7111846762867592, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 0.7111846762867592, + 1.5599843084222236, + 0.7111846762867592, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 0.7111846762867592, + 0.7111846762867592, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 0.7111846762867592, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 0.7111846762867592, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 0.7111846762867592, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 0.7111846762867592, + 0.7111846762867592, + 0.7111846762867592, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 0.7111846762867592, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 0.7111846762867592, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 0.7111846762867592, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 0.7111846762867592, + 1.5599843084222236, + 0.7111846762867592, + 0.7111846762867592, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 0.7111846762867592, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 0.7111846762867592, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 0.7111846762867592, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 0.7111846762867592, + 0.7111846762867592, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 0.7111846762867592, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 0.7111846762867592, + 0.7111846762867592, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 0.7111846762867592, + 0.7111846762867592, + 0.7111846762867592, + 1.5599843084222236, + 0.7111846762867592, + 1.5599843084222236, + 1.5599843084222236, + 0.7111846762867592, + 0.7111846762867592, + 0.7111846762867592, + 0.7111846762867592, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 0.7111846762867592, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 0.7111846762867592, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 0.7111846762867592, + 1.5599843084222236, + 0.7111846762867592, + 0.7111846762867592, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 0.7111846762867592, + 1.5599843084222236, + 1.5599843084222236, + 0.7111846762867592, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 0.7111846762867592, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 0.7111846762867592, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 0.7111846762867592, + 1.5599843084222236, + 1.5599843084222236, + 0.7111846762867592, + 1.5599843084222236, + 1.5599843084222236, + 0.7111846762867592, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 0.7111846762867592, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 0.7111846762867592, + 0.7111846762867592, + 0.7111846762867592, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 0.7111846762867592, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 0.7111846762867592, + 1.5599843084222236, + 1.5599843084222236, + 0.7111846762867592, + 1.5599843084222236, + 1.5599843084222236, + 0.7111846762867592, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 0.7111846762867592, + 0.7111846762867592, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 0.7111846762867592, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 0.7111846762867592, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 0.7111846762867592, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 0.7111846762867592, + 1.5599843084222236, + 0.7111846762867592, + 1.5599843084222236, + 0.7111846762867592, + 1.5599843084222236, + 0.7111846762867592, + 1.5599843084222236, + 1.5599843084222236, + 0.7111846762867592, + 0.7111846762867592, + 1.5599843084222236, + 0.7111846762867592, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 0.7111846762867592, + 0.7111846762867592, + 1.5599843084222236, + 0.7111846762867592, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 0.7111846762867592, + 1.5599843084222236, + 0.7111846762867592, + 1.5599843084222236, + 1.5599843084222236, + 0.7111846762867592, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 1.5599843084222236, + 2.1006911556372625, + 1.5599843084222238, + 2.1006911556372625, + 1.5599843084222238, + 4.30291638024209, + 0.7111846762867594, + 1.5599843084222238, + 2.1006911556372625, + 0.7111846762867594, + 4.30291638024209, + 2.2841215840198554, + 2.1006911556372625, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 0.7111846762867594, + 2.1006911556372625, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 4.30291638024209, + 0.7111846762867594, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 0.7111846762867594, + 1.5599843084222238, + 2.1006911556372625, + 2.1006911556372625, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 2.1006911556372625, + 1.5599843084222238, + 4.30291638024209, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 2.1006911556372625, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 4.30291638024209, + 0.7111846762867594, + 2.1006911556372625, + 2.1006911556372625, + 0.7111846762867594, + 2.1006911556372625, + 1.5599843084222238, + 4.30291638024209, + 2.1006911556372625, + 2.1006911556372625, + 4.30291638024209, + 1.5599843084222238, + 0.7111846762867594, + 2.1006911556372625, + 1.5599843084222238, + 2.1006911556372625, + 2.1006911556372625, + 0.7111846762867594, + 0.7111846762867594, + 1.5599843084222238, + 0.7111846762867594, + 1.5599843084222238, + 1.3196950565297552, + 4.30291638024209, + 4.30291638024209, + 2.1006911556372625, + 0.7111846762867594, + 1.5599843084222238, + 0.7111846762867594, + 0.7111846762867594, + 2.2841215840198554, + 1.5599843084222238, + 2.1006911556372625, + 2.1006911556372625, + 1.5599843084222238, + 4.30291638024209, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 0.7111846762867594, + 1.5599843084222238, + 1.5599843084222238, + 0.7111846762867594, + 1.5599843084222238, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 0.7111846762867594, + 1.5599843084222238, + 4.30291638024209, + 0.7111846762867594, + 1.5599843084222238, + 2.1006911556372625, + 0.7111846762867594, + 4.30291638024209, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 2.1006911556372625, + 2.1006911556372625, + 4.30291638024209, + 1.5599843084222238, + 4.30291638024209, + 1.3196950565297552, + 4.30291638024209, + 1.5599843084222238, + 2.1006911556372625, + 1.5599843084222238, + 0.7111846762867594, + 2.1006911556372625, + 0.7111846762867594, + 2.1006911556372625, + 4.30291638024209, + 0.7111846762867594, + 1.3196950565297552, + 4.30291638024209, + 0.7111846762867594, + 0.7111846762867594, + 2.1006911556372625, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 0.7111846762867594, + 2.1006911556372625, + 4.30291638024209, + 1.5599843084222238, + 1.5599843084222238, + 2.1006911556372625, + 1.5599843084222238, + 4.30291638024209, + 2.1006911556372625, + 1.5599843084222238, + 2.1006911556372625, + 1.5599843084222238, + 1.5599843084222238, + 2.1006911556372625, + 1.5599843084222238, + 2.1006911556372625, + 0.7111846762867594, + 1.5599843084222238, + 1.5599843084222238, + 4.30291638024209, + 0.7111846762867594, + 1.5599843084222238, + 2.1006911556372625, + 1.5599843084222238, + 0.7111846762867594, + 1.5599843084222238, + 2.1006911556372625, + 2.1006911556372625, + 0.7111846762867594, + 2.1006911556372625, + 4.30291638024209, + 2.1006911556372625, + 0.7111846762867594, + 1.5599843084222238, + 1.5599843084222238, + 2.1006911556372625, + 1.5599843084222238, + 4.30291638024209, + 4.30291638024209, + 2.1006911556372625, + 4.30291638024209, + 1.5599843084222238, + 1.5599843084222238, + 0.7111846762867594, + 1.5599843084222238, + 0.7111846762867594, + 2.1006911556372625, + 0.7111846762867594, + 4.30291638024209, + 2.1006911556372625, + 1.5599843084222238, + 0.7111846762867594, + 4.30291638024209, + 4.30291638024209, + 0.7111846762867594, + 4.30291638024209, + 2.1006911556372625, + 1.5599843084222238, + 4.30291638024209, + 0.7111846762867594, + 0.7111846762867594, + 1.5599843084222238, + 0.7111846762867594, + 1.5599843084222238, + 4.30291638024209, + 1.5599843084222238, + 0.7111846762867594, + 0.7111846762867594, + 4.30291638024209, + 0.7111846762867594, + 4.30291638024209, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 2.1006911556372625, + 2.1006911556372625, + 1.5599843084222238, + 1.5599843084222238, + 2.1006911556372625, + 2.1006911556372625, + 1.5599843084222238, + 0.7111846762867594, + 1.5599843084222238, + 1.5599843084222238, + 4.30291638024209, + 1.5599843084222238, + 4.30291638024209, + 0.7111846762867594, + 1.5599843084222238, + 0.7111846762867594, + 0.7111846762867594, + 1.5599843084222238, + 2.1006911556372625, + 1.5599843084222238, + 1.5599843084222238, + 4.30291638024209, + 1.5599843084222238, + 4.30291638024209, + 0.7111846762867594, + 4.30291638024209, + 0.7111846762867594, + 0.7111846762867594, + 1.5599843084222238, + 0.7111846762867594, + 0.7111846762867594, + 1.5599843084222238, + 2.1006911556372625, + 2.1006911556372625, + 4.30291638024209, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 2.1006911556372625, + 4.30291638024209, + 1.5599843084222238, + 1.5599843084222238, + 2.1006911556372625, + 2.1006911556372625, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 1.5599843084222238, + 2.1006911556372625, + 1.5599843084222238, + 2.1006911556372625, + 4.30291638024209, + 1.5599843084222238, + 0.7111846762867594, + 2.1006911556372625, + 4.30291638024209, + 2.1006911556372625, + 1.5599843084222238, + 1.3196950565297552, + 2.1006911556372625, + 2.1006911556372625, + 4.30291638024209, + 1.5599843084222238, + 0.7111846762867594, + 0.7111846762867594, + 2.1006911556372625, + 0.7111846762867594, + 0.7111846762867594, + 0.7111846762867594, + 2.1006911556372625, + 1.5599843084222238, + 0.7111846762867594, + 1.5599843084222238, + 0.7111846762867594, + 4.30291638024209, + 2.1006911556372625, + 4.30291638024209, + 2.1006911556372625, + 4.30291638024209, + 1.5599843084222238, + 4.30291638024209, + 0.7111846762867594, + 0.7111846762867594, + 2.1006911556372625, + 2.2841215840198554, + 2.1006911556372625, + 4.30291638024209, + 2.1006911556372625, + 1.5599843084222238, + 2.1006911556372625, + 1.5599843084222238, + 4.30291638024209, + 2.1006911556372625, + 4.30291638024209, + 0.7111846762867594, + 1.5599843084222238, + 2.1006911556372625, + 1.5599843084222238, + 1.5599843084222238, + 4.30291638024209, + 0.7111846762867594, + 2.1006911556372625, + 2.1006911556372625, + 0.7111846762867594, + 1.5599843084222238, + 1.5599843084222238, + 0.7111846762867594, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 0.7111846762867594, + 2.1006911556372625, + 2.1006911556372625, + 1.5599843084222238, + 1.5599843084222238, + 4.30291638024209, + 2.1006911556372625, + 0.7111846762867594, + 1.5599843084222238, + 4.30291638024209, + 2.1006911556372625, + 2.1006911556372625, + 1.5599843084222238, + 1.5599843084222238, + 2.1006911556372625, + 2.1006911556372625, + 4.30291638024209, + 1.5599843084222238, + 2.1006911556372625, + 0.7111846762867594, + 4.30291638024209, + 2.2841215840198554, + 4.30291638024209, + 1.5599843084222238, + 1.5599843084222238, + 0.7111846762867594, + 4.30291638024209, + 2.1006911556372625, + 4.30291638024209, + 4.30291638024209, + 1.5599843084222238, + 4.30291638024209, + 1.5599843084222238, + 4.30291638024209, + 1.5599843084222238, + 1.5599843084222238, + 2.1006911556372625, + 2.1006911556372625, + 4.30291638024209, + 4.30291638024209, + 0.7111846762867594, + 2.1006911556372625, + 2.1006911556372625, + 1.5599843084222238, + 4.30291638024209, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 1.5599843084222238, + 1.5599843084222238, + 2.1006911556372625, + 1.5599843084222238, + 2.1006911556372625, + 4.30291638024209, + 1.5599843084222238, + 1.5599843084222238, + 0.7111846762867594, + 2.1006911556372625, + 0.7111846762867594, + 1.5599843084222238, + 4.30291638024209, + 1.5599843084222238, + 4.30291638024209, + 4.30291638024209, + 1.5599843084222238, + 4.30291638024209, + 2.1006911556372625, + 1.5599843084222238, + 0.7111846762867594, + 0.7111846762867594, + 2.1006911556372625, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 2.1006911556372625, + 0.7111846762867594, + 0.7111846762867594, + 1.5599843084222238, + 2.1006911556372625, + 4.30291638024209, + 4.30291638024209, + 1.5599843084222238, + 1.5599843084222238, + 2.1006911556372625, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 1.5599843084222238, + 0.7111846762867594, + 1.5599843084222238, + 2.2841215840198554, + 0.7111846762867594, + 4.30291638024209, + 1.5599843084222238, + 2.1006911556372625, + 1.5599843084222238, + 4.30291638024209, + 2.1006911556372625, + 1.5599843084222238, + 1.5599843084222238, + 0.7111846762867594, + 0.7111846762867594, + 1.5599843084222238, + 4.30291638024209, + 2.1006911556372625, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.3196950565297552, + 2.1006911556372625, + 2.1006911556372625, + 0.7111846762867594, + 2.1006911556372625, + 2.2841215840198554, + 2.1006911556372625, + 1.5599843084222238, + 1.5599843084222238, + 0.7111846762867594, + 0.7111846762867594, + 1.5599843084222238, + 1.5599843084222238, + 0.7111846762867594, + 0.7111846762867594, + 0.7111846762867594, + 4.30291638024209, + 4.30291638024209, + 0.7111846762867594, + 1.5599843084222238, + 0.7111846762867594, + 2.1006911556372625, + 1.3196950565297552, + 0.7111846762867594, + 1.5599843084222238, + 1.5599843084222238, + 4.30291638024209, + 4.30291638024209, + 1.5599843084222238, + 0.7111846762867594, + 4.30291638024209, + 1.5599843084222238, + 0.7111846762867594, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 4.30291638024209, + 1.5599843084222238, + 1.5599843084222238, + 2.1006911556372625, + 1.5599843084222238, + 2.1006911556372625, + 4.30291638024209, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 4.30291638024209, + 2.2841215840198554, + 4.30291638024209, + 0.7111846762867594, + 1.5599843084222238, + 2.1006911556372625, + 0.7111846762867594, + 0.7111846762867594, + 1.5599843084222238, + 2.1006911556372625, + 1.5599843084222238, + 1.5599843084222238, + 2.1006911556372625, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 0.7111846762867594, + 1.5599843084222238, + 1.5599843084222238, + 0.7111846762867594, + 1.5599843084222238, + 4.30291638024209, + 2.1006911556372625, + 1.5599843084222238, + 2.1006911556372625, + 1.3196950565297552, + 4.30291638024209, + 1.5599843084222238, + 0.7111846762867594, + 2.1006911556372625, + 1.5599843084222238, + 1.5599843084222238, + 2.1006911556372625, + 1.5599843084222238, + 2.1006911556372625, + 4.30291638024209, + 1.5599843084222238, + 2.1006911556372625, + 1.5599843084222238, + 1.5599843084222238, + 4.30291638024209, + 0.7111846762867594, + 4.30291638024209, + 1.5599843084222238, + 1.5599843084222238, + 4.30291638024209, + 2.1006911556372625, + 0.7111846762867594, + 1.5599843084222238, + 0.7111846762867594, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 4.30291638024209, + 2.1006911556372625, + 1.5599843084222238, + 1.5599843084222238, + 0.7111846762867594, + 4.30291638024209, + 2.1006911556372625, + 2.1006911556372625, + 4.30291638024209, + 1.5599843084222238, + 1.5599843084222238, + 0.7111846762867594, + 1.5599843084222238, + 1.3196950565297552, + 1.3196950565297552, + 4.30291638024209, + 1.5599843084222238, + 0.7111846762867594, + 0.7111846762867594, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 2.1006911556372625, + 0.7111846762867594, + 1.5599843084222238, + 1.5599843084222238, + 2.1006911556372625, + 1.5599843084222238, + 4.30291638024209, + 1.5599843084222238, + 1.5599843084222238, + 2.1006911556372625, + 4.30291638024209, + 1.5599843084222238, + 2.1006911556372625, + 0.7111846762867594, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 2.1006911556372625, + 1.5599843084222238, + 1.5599843084222238, + 2.1006911556372625, + 1.5599843084222238, + 2.1006911556372625, + 1.5599843084222238, + 0.7111846762867594, + 1.5599843084222238, + 2.1006911556372625, + 1.5599843084222238, + 2.1006911556372625, + 0.7111846762867594, + 1.5599843084222238, + 1.5599843084222238, + 0.7111846762867594, + 4.30291638024209, + 1.5599843084222238, + 1.3196950565297552, + 4.30291638024209, + 1.5599843084222238, + 1.5599843084222238, + 4.30291638024209, + 1.5599843084222238, + 4.30291638024209, + 0.7111846762867594, + 1.5599843084222238, + 0.7111846762867594, + 4.30291638024209, + 0.7111846762867594, + 1.5599843084222238, + 4.30291638024209, + 1.5599843084222238, + 0.7111846762867594, + 1.5599843084222238, + 4.30291638024209, + 4.30291638024209, + 1.5599843084222238, + 4.30291638024209, + 1.5599843084222238, + 0.7111846762867594, + 1.5599843084222238, + 0.7111846762867594, + 2.1006911556372625, + 0.7111846762867594, + 4.30291638024209, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 4.30291638024209, + 2.1006911556372625, + 4.30291638024209, + 1.5599843084222238, + 2.1006911556372625, + 0.7111846762867594, + 4.30291638024209, + 1.5599843084222238, + 4.30291638024209, + 0.7111846762867594, + 1.5599843084222238, + 2.1006911556372625, + 2.1006911556372625, + 0.7111846762867594, + 4.30291638024209, + 0.7111846762867594, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 1.5599843084222238, + 4.30291638024209, + 1.5599843084222238, + 4.30291638024209, + 1.5599843084222238, + 2.1006911556372625, + 0.7111846762867594, + 1.5599843084222238, + 1.5599843084222238, + 4.30291638024209, + 1.5599843084222238, + 4.30291638024209, + 2.1006911556372625, + 4.30291638024209, + 2.1006911556372625, + 2.1006911556372625, + 1.5599843084222238, + 4.30291638024209, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 0.7111846762867594, + 2.1006911556372625, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 4.30291638024209, + 1.5599843084222238, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 4.30291638024209, + 1.5599843084222238, + 1.5599843084222238, + 2.1006911556372625, + 4.30291638024209, + 1.5599843084222238, + 1.5599843084222238, + 2.1006911556372625, + 2.1006911556372625, + 0.7111846762867594, + 1.5599843084222238, + 1.5599843084222238, + 2.1006911556372625, + 1.5599843084222238, + 0.7111846762867594, + 0.7111846762867594, + 0.7111846762867594, + 4.30291638024209, + 4.30291638024209, + 0.7111846762867594, + 1.5599843084222238, + 2.1006911556372625, + 2.1006911556372625, + 0.7111846762867594, + 1.5599843084222238, + 4.30291638024209, + 2.1006911556372625, + 0.7111846762867594, + 1.5599843084222238, + 2.1006911556372625, + 4.30291638024209, + 1.5599843084222238, + 4.30291638024209, + 1.5599843084222238, + 4.30291638024209, + 1.5599843084222238, + 4.30291638024209, + 1.5599843084222238, + 4.30291638024209, + 0.7111846762867594, + 1.5599843084222238, + 1.5599843084222238, + 0.7111846762867594, + 1.5599843084222238, + 1.5599843084222238, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 1.5599843084222238, + 1.5599843084222238, + 0.7111846762867594, + 0.7111846762867594, + 1.5599843084222238, + 0.7111846762867594, + 0.7111846762867594, + 2.1006911556372625, + 0.7111846762867594, + 1.3196950565297552, + 1.3196950565297552, + 1.3196950565297552, + 2.1006911556372625, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 0.7111846762867594, + 0.7111846762867594, + 1.5599843084222238, + 2.1006911556372625, + 1.5599843084222238, + 0.7111846762867594, + 1.5599843084222238, + 4.30291638024209, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 0.7111846762867594, + 4.30291638024209, + 4.30291638024209, + 2.1006911556372625, + 0.7111846762867594, + 0.7111846762867594, + 4.30291638024209, + 1.5599843084222238, + 2.1006911556372625, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 2.1006911556372625, + 0.7111846762867594, + 2.2841215840198554, + 0.7111846762867594, + 1.5599843084222238, + 1.5599843084222238, + 0.7111846762867594, + 2.1006911556372625, + 0.7111846762867594, + 1.5599843084222238, + 0.7111846762867594, + 2.1006911556372625, + 2.1006911556372625, + 1.5599843084222238, + 1.5599843084222238, + 0.7111846762867594, + 4.30291638024209, + 0.7111846762867594, + 0.7111846762867594, + 0.7111846762867594, + 0.7111846762867594, + 0.7111846762867594, + 2.1006911556372625, + 1.5599843084222238, + 2.1006911556372625, + 1.5599843084222238, + 2.1006911556372625, + 1.5599843084222238, + 1.5599843084222238, + 0.7111846762867594, + 4.30291638024209, + 2.1006911556372625, + 0.7111846762867594, + 2.1006911556372625, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 2.1006911556372625, + 2.1006911556372625, + 1.5599843084222238, + 2.2841215840198554, + 1.5599843084222238, + 1.5599843084222238, + 0.7111846762867594, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 2.2841215840198554, + 1.5599843084222238, + 4.30291638024209, + 0.7111846762867594, + 2.1006911556372625, + 0.7111846762867594, + 1.3196950565297552, + 2.1006911556372625, + 1.5599843084222238, + 4.30291638024209, + 2.1006911556372625, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 4.30291638024209, + 2.1006911556372625, + 1.5599843084222238, + 1.5599843084222238, + 4.30291638024209, + 0.7111846762867594, + 2.1006911556372625, + 1.5599843084222238, + 2.1006911556372625, + 1.5599843084222238, + 1.5599843084222238, + 2.1006911556372625, + 1.5599843084222238, + 2.1006911556372625, + 2.2841215840198554, + 0.7111846762867594, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 0.7111846762867594, + 1.5599843084222238, + 4.30291638024209, + 1.5599843084222238, + 1.5599843084222238, + 1.3196950565297552, + 0.7111846762867594, + 1.5599843084222238, + 0.7111846762867594, + 1.5599843084222238, + 4.30291638024209, + 0.7111846762867594, + 1.5599843084222238, + 0.7111846762867594, + 1.5599843084222238, + 1.5599843084222238, + 4.30291638024209, + 2.1006911556372625, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 0.7111846762867594, + 2.1006911556372625, + 4.30291638024209, + 1.5599843084222238, + 2.1006911556372625, + 1.5599843084222238, + 2.1006911556372625, + 1.5599843084222238, + 0.7111846762867594, + 4.30291638024209, + 2.1006911556372625, + 4.30291638024209, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 2.1006911556372625, + 0.7111846762867594, + 1.5599843084222238, + 1.5599843084222238, + 0.7111846762867594, + 0.7111846762867594, + 4.30291638024209, + 1.5599843084222238, + 2.1006911556372625, + 0.7111846762867594, + 0.7111846762867594, + 4.30291638024209, + 1.5599843084222238, + 1.5599843084222238, + 2.1006911556372625, + 4.30291638024209, + 1.5599843084222238, + 2.1006911556372625, + 2.1006911556372625, + 1.5599843084222238, + 0.7111846762867594, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 4.30291638024209, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 4.30291638024209, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 0.7111846762867594, + 1.5599843084222238, + 2.1006911556372625, + 1.5599843084222238, + 2.1006911556372625, + 1.5599843084222238, + 2.1006911556372625, + 1.5599843084222238, + 1.5599843084222238, + 2.1006911556372625, + 1.5599843084222238, + 2.1006911556372625, + 2.1006911556372625, + 4.30291638024209, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 1.5599843084222238, + 2.1006911556372625, + 4.30291638024209, + 2.2841215840198554, + 0.7111846762867594, + 1.5599843084222238, + 1.5599843084222238, + 0.7111846762867594, + 1.5599843084222238, + 1.5599843084222238, + 0.7111846762867594, + 2.1006911556372625, + 2.1006911556372625, + 0.7111846762867594, + 2.1006911556372625, + 1.5599843084222238, + 1.5599843084222238, + 0.7111846762867594, + 1.5599843084222238, + 1.5599843084222238, + 2.1006911556372625, + 0.7111846762867594, + 4.30291638024209, + 4.30291638024209, + 0.7111846762867594, + 1.5599843084222238, + 2.1006911556372625, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 2.1006911556372625, + 1.5599843084222238, + 4.30291638024209, + 4.30291638024209, + 0.7111846762867594, + 0.7111846762867594, + 4.30291638024209, + 1.5599843084222238, + 1.5599843084222238, + 0.7111846762867594, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 4.30291638024209, + 4.30291638024209, + 1.5599843084222238, + 4.30291638024209, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 1.5599843084222238, + 2.1006911556372625, + 1.3196950565297552, + 4.30291638024209, + 1.5599843084222238, + 0.7111846762867594, + 1.5599843084222238, + 4.30291638024209, + 2.1006911556372625, + 1.5599843084222238, + 0.7111846762867594, + 0.7111846762867594, + 2.1006911556372625, + 2.1006911556372625, + 1.5599843084222238, + 2.1006911556372625, + 1.5599843084222238, + 2.1006911556372625, + 2.1006911556372625, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 4.30291638024209, + 4.30291638024209, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 2.1006911556372625, + 4.30291638024209, + 0.7111846762867594, + 2.1006911556372625, + 1.5599843084222238, + 4.30291638024209, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 2.1006911556372625, + 4.30291638024209, + 2.2841215840198554, + 1.5599843084222238, + 4.30291638024209, + 0.7111846762867594, + 0.7111846762867594, + 0.7111846762867594, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 0.7111846762867594, + 2.1006911556372625, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 2.1006911556372625, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 2.1006911556372625, + 4.30291638024209, + 2.1006911556372625, + 0.7111846762867594, + 2.2841215840198554, + 0.7111846762867594, + 2.1006911556372625, + 1.5599843084222238, + 1.5599843084222238, + 2.1006911556372625, + 1.5599843084222238, + 0.7111846762867594, + 0.7111846762867594, + 2.1006911556372625, + 1.5599843084222238, + 2.1006911556372625, + 1.5599843084222238, + 2.1006911556372625, + 1.5599843084222238, + 1.5599843084222238, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 0.7111846762867594, + 1.5599843084222238, + 0.7111846762867594, + 1.5599843084222238, + 1.5599843084222238, + 0.7111846762867594, + 2.1006911556372625, + 4.30291638024209, + 1.5599843084222238, + 2.1006911556372625, + 0.7111846762867594, + 0.7111846762867594, + 4.30291638024209, + 0.7111846762867594, + 2.1006911556372625, + 4.30291638024209, + 2.1006911556372625, + 1.5599843084222238, + 0.7111846762867594, + 4.30291638024209, + 4.30291638024209, + 1.5599843084222238, + 1.5599843084222238, + 0.7111846762867594, + 1.5599843084222238, + 2.1006911556372625, + 2.1006911556372625, + 1.5599843084222238, + 1.5599843084222238, + 4.30291638024209, + 1.5599843084222238, + 0.7111846762867594, + 1.5599843084222238, + 1.5599843084222238, + 2.1006911556372625, + 1.5599843084222238, + 1.5599843084222238, + 4.30291638024209, + 1.5599843084222238, + 2.1006911556372625, + 1.5599843084222238, + 0.7111846762867594, + 1.5599843084222238, + 1.5599843084222238, + 2.1006911556372625, + 0.7111846762867594, + 1.5599843084222238, + 2.1006911556372625, + 4.30291638024209, + 1.5599843084222238, + 1.5599843084222238, + 2.1006911556372625, + 2.1006911556372625, + 4.30291638024209, + 1.5599843084222238, + 4.30291638024209, + 2.1006911556372625, + 1.5599843084222238, + 2.1006911556372625, + 0.7111846762867594, + 2.1006911556372625, + 1.5599843084222238, + 2.2841215840198554, + 1.5599843084222238, + 1.5599843084222238, + 2.1006911556372625, + 1.5599843084222238, + 4.30291638024209, + 2.1006911556372625, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 4.30291638024209, + 2.1006911556372625, + 1.5599843084222238, + 1.5599843084222238, + 2.1006911556372625, + 2.1006911556372625, + 0.7111846762867594, + 1.5599843084222238, + 2.1006911556372625, + 1.5599843084222238, + 4.30291638024209, + 1.5599843084222238, + 2.1006911556372625, + 4.30291638024209, + 0.7111846762867594, + 4.30291638024209, + 2.1006911556372625, + 1.5599843084222238, + 0.7111846762867594, + 1.5599843084222238, + 2.1006911556372625, + 0.7111846762867594, + 4.30291638024209, + 4.30291638024209, + 1.5599843084222238, + 1.5599843084222238, + 2.1006911556372625, + 1.5599843084222238, + 1.5599843084222238, + 2.1006911556372625, + 4.30291638024209, + 4.30291638024209, + 1.5599843084222238, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 0.7111846762867594, + 1.5599843084222238, + 4.30291638024209, + 2.1006911556372625, + 0.7111846762867594, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 0.7111846762867594, + 4.30291638024209, + 2.1006911556372625, + 2.1006911556372625, + 1.5599843084222238, + 4.30291638024209, + 1.5599843084222238, + 4.30291638024209, + 0.7111846762867594, + 2.1006911556372625, + 0.7111846762867594, + 4.30291638024209, + 2.1006911556372625, + 2.1006911556372625, + 1.5599843084222238, + 0.7111846762867594, + 2.1006911556372625, + 4.30291638024209, + 2.1006911556372625, + 2.1006911556372625, + 0.7111846762867594, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 0.7111846762867594, + 0.7111846762867594, + 2.1006911556372625, + 2.1006911556372625, + 4.30291638024209, + 1.5599843084222238, + 1.3196950565297552, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 0.7111846762867594, + 0.7111846762867594, + 1.5599843084222238, + 1.5599843084222238, + 2.1006911556372625, + 0.7111846762867594, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 2.1006911556372625, + 2.1006911556372625, + 1.5599843084222238, + 1.5599843084222238, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 2.1006911556372625, + 1.5599843084222238, + 4.30291638024209, + 4.30291638024209, + 2.1006911556372625, + 1.5599843084222238, + 2.2841215840198554, + 1.3196950565297552, + 2.1006911556372625, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 0.7111846762867594, + 1.5599843084222238, + 2.1006911556372625, + 4.30291638024209, + 2.1006911556372625, + 2.1006911556372625, + 1.5599843084222238, + 0.7111846762867594, + 0.7111846762867594, + 4.30291638024209, + 4.30291638024209, + 2.1006911556372625, + 1.5599843084222238, + 1.5599843084222238, + 4.30291638024209, + 0.7111846762867594, + 2.1006911556372625, + 4.30291638024209, + 2.1006911556372625, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 2.2841215840198554, + 2.1006911556372625, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.3196950565297552, + 2.1006911556372625, + 1.5599843084222238, + 4.30291638024209, + 2.1006911556372625, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 1.5599843084222238, + 2.2841215840198554, + 2.2841215840198554, + 2.2841215840198554, + 2.2841215840198554, + 2.2841215840198554, + 2.2841215840198554, + 2.2841215840198554, + 2.2841215840198554, + 2.2841215840198554, + 2.2841215840198554, + 2.2841215840198554, + 2.2841215840198554, + 2.2841215840198554, + 2.2841215840198554, + 2.2841215840198554, + 2.2841215840198554, + 2.2841215840198554, + 2.2841215840198554, + 2.2841215840198554, + 2.2841215840198554, + 2.2841215840198554, + 2.2841215840198554, + 2.2841215840198554, + 2.2841215840198554, + 2.2841215840198554, + 2.2841215840198554, + 2.2841215840198554, + 2.2841215840198554, + 2.2841215840198554, + 2.2841215840198554, + 2.2841215840198554, + 2.2841215840198554, + 2.2841215840198554, + 2.2841215840198554, + 2.2841215840198554, + 2.2841215840198554, + 2.2841215840198554, + 2.2841215840198554, + 2.2841215840198554, + 2.2841215840198554, + 2.2841215840198554, + 2.2841215840198554, + 2.2841215840198554, + 2.2841215840198554, + 2.2841215840198554, + 2.2841215840198554, + 2.2841215840198554, + 2.2841215840198554, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 4.30291638024209, + 1.389506479350503, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 1.389506479350503, + 2.1006911556372625, + 2.1006911556372625, + 1.389506479350503, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 1.389506479350503, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 1.389506479350503, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 1.389506479350503, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 1.389506479350503, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 1.389506479350503, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 1.389506479350503, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 1.389506479350503, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 1.389506479350503, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 1.389506479350503, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 1.389506479350503, + 1.389506479350503, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 1.389506479350503, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 1.389506479350503, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 1.389506479350503, + 2.1006911556372625, + 2.1006911556372625, + 1.389506479350503, + 2.1006911556372625, + 1.389506479350503, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 1.389506479350503, + 1.389506479350503, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 1.389506479350503, + 2.1006911556372625, + 2.1006911556372625, + 1.389506479350503, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 1.389506479350503, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 1.389506479350503, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 1.389506479350503, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 1.389506479350503, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 1.389506479350503, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 1.389506479350503, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 1.389506479350503, + 2.1006911556372625, + 1.389506479350503, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 1.389506479350503, + 2.1006911556372625, + 1.389506479350503, + 2.1006911556372625, + 1.389506479350503, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 1.389506479350503, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 1.389506479350503, + 2.1006911556372625, + 1.389506479350503, + 2.1006911556372625, + 2.1006911556372625, + 1.389506479350503, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 1.389506479350503, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 1.389506479350503, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 1.389506479350503, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 1.389506479350503, + 1.389506479350503, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 1.389506479350503, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 1.389506479350503, + 1.389506479350503, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 1.389506479350503, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 1.389506479350503, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 1.389506479350503, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 1.389506479350503, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 1.389506479350503, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 1.389506479350503, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 1.389506479350503, + 2.1006911556372625, + 2.1006911556372625, + 2.1006911556372625, + 1.389506479350503, + 2.1006911556372625, + 2.1006911556372625, + 1.389506479350503, + 2.1006911556372625, + 2.1006911556372625 + ] + }, + "mode": "markers", + "name": "Samples", + "x": [ + 0.6283796051478613, + 0.4733941091531527, + 0.304361377162602, + 0.36284938416969975, + 0.6192935890618187, + 0.60569568825769, + 0.46209790585296506, + 0.4949180298869439, + 0.6082241880992127, + 0.6238732508162596, + 0.672419060525532, + 0.5015495966798355, + 0.489947673645203, + 0.5492221697091524, + 0.3342703944183883, + 0.447428846314081, + 0.5518460984334048, + 0.3762043560058192, + 0.38631403755468446, + 0.5731636866909333, + 0.6064380749373501, + 0.5581377601291668, + 0.34301083313043607, + 0.4041324880582714, + 0.46561065509360255, + 0.6607704969526416, + 0.5360423734844382, + 0.4396901444838215, + 0.3342659204991326, + 0.4508799168259236, + 0.7267501358565729, + 0.5774155344797809, + 0.4802995783278318, + 0.6259046039930717, + 0.5509234830387231, + 0.5979993309410865, + 0.3837501194179711, + 0.47724999649198996, + 0.5217503468772747, + 0.5911001664796485, + 0.7241855400914489, + 0.37652717615879083, + 0.6269403586596356, + 0.5190834700749936, + 0.7227155040316005, + 0.6980411624967708, + 0.6427659094601246, + 0.39129194192301037, + 0.6110548782975422, + 0.3578221939924544, + 0.5593612538329051, + 0.4242497680912969, + 0.33850502580537883, + 0.6624764140650907, + 0.5655498575234894, + 0.3513137342537306, + 0.5085605551150013, + 0.6795004868407264, + 0.7021650682569843, + 0.5464262028130219, + 0.3659137794140434, + 0.3035437484499797, + 0.621384755232, + 0.7127270505757348, + 0.5651482743737656, + 0.7172958782692103, + 0.4142258940645192, + 0.6283486257077753, + 0.5238753668814327, + 0.5224017091836275, + 0.654498842944883, + 0.31295824876444706, + 0.7032865644494084, + 0.5281808732843437, + 0.48237193543067824, + 0.5707346770253106, + 0.40073765327089156, + 0.5540192954764896, + 0.32424110743165807, + 0.6766238307374881, + 0.3552251801945203, + 0.5260888280230741, + 0.6003375145624322, + 0.31877983684677236, + 0.4849292440295056, + 0.500861419308714, + 0.6618628201514674, + 0.6245222795406817, + 0.3123254397986413, + 0.4460377450601758, + 0.32696165476038197, + 0.697428491997524, + 0.529329277241698, + 0.7158733454945663, + 0.47633915643367997, + 0.5416173216581522, + 0.5233908056901426, + 0.3203996744550525, + 0.3801845695589516, + 0.6670287839403085, + 0.3132663532849949, + 0.5955014052813781, + 0.4714887925132052, + 0.3275115131512901, + 0.6415961989581219, + 0.3148918732168174, + 0.35950163197893903, + 0.5400825294091965, + 0.5409142823337219, + 0.510884620356082, + 0.40843494021431215, + 0.6170885039370684, + 0.3184088588382493, + 0.34549853802720587, + 0.5009104270382855, + 0.630314078109385, + 0.5797826573171031, + 0.5981062464628402, + 0.7192849232273155, + 0.7048041011396435, + 0.6526676271347946, + 0.32480658725867756, + 0.6465195069131373, + 0.4287674544120826, + 0.5273009545488178, + 0.4131261688779221, + 0.5961979593463775, + 0.5977206271695695, + 0.6379850363365573, + 0.6510702071219862, + 0.3899024901566016, + 0.5903523026509128, + 0.5267174672574283, + 0.5025120386997262, + 0.4810441994654623, + 0.6535007580572905, + 0.358192775590812, + 0.5174375012912954, + 0.46296430725722476, + 0.5554631238623899, + 0.6419914456946771, + 0.38463659724407784, + 0.5914033397518752, + 0.44812267790590393, + 0.49089156494998054, + 0.4185962716569772, + 0.4229205330398457, + 0.4623104362414824, + 0.3424233609076441, + 0.3339719360703627, + 0.6902291092064361, + 0.7021906294431108, + 0.31361578139190127, + 0.5468603954558365, + 0.40880690638251915, + 0.4588205901853545, + 0.505964213088147, + 0.4236511205665603, + 0.37495689167758006, + 0.3040047769720844, + 0.6311074299729487, + 0.7065956391240829, + 0.44584395163192914, + 0.306491629355991, + 0.7260294224247383, + 0.5383033820125867, + 0.6870078685876879, + 0.5099232704826162, + 0.5492410510803237, + 0.7270461091493341, + 0.6867594129775483, + 0.6445230430876836, + 0.6059327796605836, + 0.47900075321983054, + 0.6763662997777012, + 0.38160731808943543, + 0.3407477501223138, + 0.5594795229003933, + 0.40432473180131945, + 0.5419093614808759, + 0.6122666351974309, + 0.6969620543382329, + 0.5233198963800162, + 0.6770887490764189, + 0.563653773728354, + 0.5743622918856718, + 0.6816575519919552, + 0.5661830051289992, + 0.5679186190078296, + 0.6109985479745175, + 0.5534668006831678, + 0.31139630606287005, + 0.5885885434050432, + 0.4532673389629965, + 0.3645037461398636, + 0.3973278943523142, + 0.354530449093353, + 0.4747795182905353, + 0.6213517101286439, + 0.5267572842853802, + 0.5276500210009093, + 0.49832823987881425, + 0.5190553606893737, + 0.633874032599939, + 0.4602054346676733, + 0.6500319677259623, + 0.6619274965491957, + 0.40922291501520885, + 0.5656487570348294, + 0.5150732906585561, + 0.6297927495272928, + 0.5038430739457092, + 0.7241831836769697, + 0.32259587532130823, + 0.6029698595052331, + 0.41247081235211625, + 0.689422326422999, + 0.32380105199830156, + 0.42917246007924026, + 0.5046409001510277, + 0.7221649175887925, + 0.6833312627852342, + 0.6653609053091462, + 0.3462606623135728, + 0.4229378690434816, + 0.38551270869930254, + 0.6262746513793682, + 0.4176376980973968, + 0.5599410522484581, + 0.39122592680267415, + 0.5208435463642249, + 0.604142496269586, + 0.4823654311142736, + 0.32615067922989005, + 0.45844687093758496, + 0.6970015859807508, + 0.43966400842521774, + 0.5606086507572204, + 0.4306204768619101, + 0.6297983391676569, + 0.7060330985251653, + 0.5497512038674017, + 0.4379363786805115, + 0.6919095195926468, + 0.4398408120373566, + 0.34107310109250133, + 0.4710481718033095, + 0.6902624528623372, + 0.47149238191054677, + 0.7073712325045667, + 0.41007785279872205, + 0.6813771015130272, + 0.689156090640948, + 0.42444101075788304, + 0.3983902751758033, + 0.33133242086105663, + 0.43143489164464144, + 0.6603533137811184, + 0.3971827866512632, + 0.6884596397822573, + 0.3386128177610371, + 0.46633874072655535, + 0.3039530018038552, + 0.701683403292688, + 0.5119862644623705, + 0.5868539398870433, + 0.6661159422506897, + 0.3573903959782653, + 0.7236631093973747, + 0.3956232717829736, + 0.320391818473174, + 0.6674961608973242, + 0.36061856188095703, + 0.6980586756494421, + 0.7073654337447988, + 0.4876723572953149, + 0.3709356370654626, + 0.7144926539367294, + 0.6298249030036835, + 0.5682918041701379, + 0.6355509607890755, + 0.6007885572961679, + 0.520014578282243, + 0.4359298474375825, + 0.4566018956651901, + 0.467933063816996, + 0.6029959785228813, + 0.3234403383640688, + 0.4984592116233576, + 0.4254974782247243, + 0.3895032329263608, + 0.46261420747622917, + 0.417954500372443, + 0.5267979380626389, + 0.6185754300952171, + 0.7028395941568784, + 0.5601627793712287, + 0.5106977430017323, + 0.6061639107185534, + 0.40583301205118316, + 0.4877842654212847, + 0.3560924542784373, + 0.6505160542896489, + 0.6612727587409887, + 0.5577267848008154, + 0.44967862148681065, + 0.6499736804413174, + 0.4646792575596459, + 0.30665928292734, + 0.3051754984588699, + 0.34005416341775413, + 0.421918406262349, + 0.371580524378551, + 0.3087258645363744, + 0.45703796625085436, + 0.5632576230548111, + 0.5342318981535477, + 0.3915610853056041, + 0.5905756545770827, + 0.5709043622195802, + 0.5297699866169563, + 0.7192767445297887, + 0.39645957008013316, + 0.6589632086708673, + 0.638629610430095, + 0.5903277817912345, + 0.4650966357709906, + 0.5173483048558812, + 0.4562587239080659, + 0.6702573061262282, + 0.505230432269204, + 0.5420268768709828, + 0.35210358755474286, + 0.49250246186480595, + 0.6048799065601089, + 0.6354850865697617, + 0.35630162812176314, + 0.7140168541260483, + 0.35663897352621016, + 0.3686061423197887, + 0.30497686179145655, + 0.45455480714795604, + 0.36871758658091336, + 0.4156997632776323, + 0.4183593735188326, + 0.6640053258897827, + 0.5086446960615851, + 0.6247755246246731, + 0.5411817779685021, + 0.4842300300338286, + 0.4606548163786671, + 0.5186913574109123, + 0.6192151655498841, + 0.5589808035215549, + 0.5622196328426435, + 0.5839507122576795, + 0.4376236695976157, + 0.578691275629837, + 0.4659718970927792, + 0.6184663738987715, + 0.5113988607038276, + 0.5445328079384409, + 0.6541140035045494, + 0.7262085982391857, + 0.6013049240009737, + 0.6082525469263866, + 0.508164542825417, + 0.46319604226440547, + 0.5260510279355417, + 0.48813195110547797, + 0.6200477024377651, + 0.32552257841431137, + 0.5887528410252281, + 0.6188650700926779, + 0.5844499758285964, + 0.724048238456035, + 0.4800421633146098, + 0.6089187052534117, + 0.3580051561467969, + 0.40853572095261526, + 0.4046707270656579, + 0.5177442029027796, + 0.5959445012916478, + 0.6321499436951448, + 0.5989908162398548, + 0.6837116545572856, + 0.4444290096851937, + 0.6149310867222517, + 0.30341107667805556, + 0.6838873138587567, + 0.6084286328176265, + 0.3682399511833895, + 0.4873082951423991, + 0.5140686109874819, + 0.5208507968162873, + 0.6332222577400335, + 0.5001339790109951, + 0.4101682379161794, + 0.38078020844088856, + 0.48346909663921644, + 0.33985859961729326, + 0.4077065571453853, + 0.5827474891208355, + 0.3577831357027577, + 0.7031409499389227, + 0.417443966312144, + 0.45521563878147575, + 0.41021513003009263, + 0.6004149207157532, + 0.6259454060416844, + 0.3645468210854622, + 0.36647900283328966, + 0.6898774221881663, + 0.4360544870007585, + 0.5017465870520186, + 0.5431177629605345, + 0.3030022800568823, + 0.5433895632745123, + 0.6949559492369004, + 0.572761882302244, + 0.35174763183801716, + 0.4358395579885442, + 0.33382431781918365, + 0.4236842800372269, + 0.5400348174179141, + 0.6073159886609243, + 0.49937804108002154, + 0.43703930625379306, + 0.4344502031515486, + 0.5030837354952916, + 0.44390687067117873, + 0.6312690527690877, + 0.3917912731311066, + 0.5820204768759425, + 0.6916000307909508, + 0.6554477404885675, + 0.561326404492038, + 0.48139690057563755, + 0.336987414314844, + 0.5006062557629332, + 0.4444737552600778, + 0.3329381016070724, + 0.5744941407795525, + 0.4943775855306687, + 0.6992931176663637, + 0.5026161378511266, + 0.6743801994163671, + 0.35898038030334445, + 0.3565514394996119, + 0.44631411899327356, + 0.3845640879270406, + 0.3351108592510633, + 0.6532378860393817, + 0.4371828490016898, + 0.4034925795124067, + 0.3674503702153532, + 0.3044280002060322, + 0.4218703606193476, + 0.5042449308690269, + 0.38564211027068523, + 0.6558231022903257, + 0.5560126680683741, + 0.3352563215537477, + 0.7205491524755758, + 0.3579527523957865, + 0.5766608857157854, + 0.4158760254905389, + 0.7254828660798414, + 0.4377450125978234, + 0.553865788554406, + 0.6026799653098628, + 0.44672772822227913, + 0.4299125919597402, + 0.44943594473254933, + 0.4058202081865294, + 0.4980013422999515, + 0.35004260221750827, + 0.6348704204681872, + 0.5392634171384282, + 0.36034790793798627, + 0.41754363792613725, + 0.5216591391302169, + 0.5558609441838249, + 0.3569756107502839, + 0.5939250351319384, + 0.41141581058398125, + 0.47878178628399803, + 0.4834364542683392, + 0.39697356309862997, + 0.47046464413206107, + 0.3113260758050484, + 0.5536538265483462, + 0.4709846143200984, + 0.5260336421209957, + 0.6267790156950703, + 0.6756082147044937, + 0.4588761067107302, + 0.6536603788145247, + 0.5075285332008663, + 0.34725463008416624, + 0.5886846022727898, + 0.6665305528531992, + 0.5408489554283811, + 0.6770047129425629, + 0.6759393508818384, + 0.3764886077840023, + 0.5455512400140748, + 0.3893455917648779, + 0.7183185846984927, + 0.4489341405107281, + 0.43152601611163915, + 0.3708401018804384, + 0.6971597444860147, + 0.3588343021068228, + 0.6481878195188715, + 0.6236154600446786, + 0.6581651777527904, + 0.6559630475406568, + 0.49608616536238836, + 0.4839834635055007, + 0.6236020552201537, + 0.6949551740096618, + 0.4894338135535844, + 0.5583221611042595, + 0.5695491523365515, + 0.3815106653105451, + 0.3609054247596117, + 0.46233603004118995, + 0.32924268717539434, + 0.6738760509745194, + 0.5908475338257169, + 0.5583959601165877, + 0.43646558987492956, + 0.6999658939630757, + 0.67781451787629, + 0.5452736046500408, + 0.5246587442708179, + 0.47089375933332633, + 0.6810735352767955, + 0.6799433578348617, + 0.7179342726248339, + 0.359862266175987, + 0.7048737893226014, + 0.6085933054040886, + 0.34038957758292643, + 0.7055886634303343, + 0.580625385705815, + 0.670503445897152, + 0.6712870848626615, + 0.6574237741536735, + 0.5211048311373343, + 0.5951479664195025, + 0.5731446608322368, + 0.492055339696243, + 0.31576918131915355, + 0.6382309508550541, + 0.7102150127425395, + 0.5062300071287669, + 0.5461431388695358, + 0.366735598591452, + 0.5796768754677205, + 0.44814101533875067, + 0.7072722691770561, + 0.3711799650374539, + 0.6358934364384226, + 0.32456115137653624, + 0.6481918035654637, + 0.43189203980929863, + 0.7115168172455448, + 0.6005225250048853, + 0.7153499089830384, + 0.4770842347954062, + 0.5760247996364849, + 0.514419240495073, + 0.5747594546402328, + 0.6418186355561335, + 0.3712909364375715, + 0.5582826959939814, + 0.5886157815200508, + 0.5022243514679431, + 0.37316024552371896, + 0.36356576213902747, + 0.5284391063549394, + 0.4144589754108895, + 0.6743923467348893, + 0.44636936950444744, + 0.3332960876035859, + 0.3083595913108275, + 0.38947706563720286, + 0.5863816530368449, + 0.4266415031175206, + 0.3061407609907423, + 0.36882588504554426, + 0.33056295261752955, + 0.603331018849461, + 0.6839652242145082, + 0.6587832179448988, + 0.6395388279938079, + 0.6299669779130854, + 0.7055115246158173, + 0.5018756870185179, + 0.5274106260303715, + 0.4467765574995587, + 0.5030948427080323, + 0.4454971253757688, + 0.5905479087573315, + 0.33409831052867367, + 0.5103031815860772, + 0.4248606710224661, + 0.39604757311824756, + 0.573887493444585, + 0.5276343863449808, + 0.4256528600264111, + 0.3282993740085136, + 0.4323001259450036, + 0.6081425510394991, + 0.41442976577404217, + 0.3113606828767387, + 0.34910387712092, + 0.6411652327478881, + 0.46200164593405674, + 0.6783391559492938, + 0.5937067818159403, + 0.6566034624287591, + 0.6946023706954061, + 0.3044514444365833, + 0.5696697783014106, + 0.6890188407927036, + 0.3318693719444405, + 0.34861360732840196, + 0.36327611366106416, + 0.6016815323598927, + 0.3438172081826617, + 0.6969577256266861, + 0.49904812333172216, + 0.4485061924555992, + 0.5963347423587984, + 0.5111272142010436, + 0.592781583582433, + 0.3529818525114483, + 0.36446595416317745, + 0.6515134331904607, + 0.6039863787967059, + 0.686379920039508, + 0.6640050733117391, + 0.6658862158944967, + 0.4443087413930883, + 0.5143388994511631, + 0.45409815609884735, + 0.4067703393824441, + 0.3163984227460437, + 0.4077965448270234, + 0.5634222038416996, + 0.621153757756524, + 0.6226490096407002, + 0.6370692718818224, + 0.3409619414503315, + 0.5225594070645009, + 0.3472857350002331, + 0.62094362417778, + 0.3911717459026043, + 0.548125468458203, + 0.5035582244768404, + 0.6856451519536151, + 0.40256120557207903, + 0.31501377329827857, + 0.7084372458254975, + 0.5712348045939447, + 0.5924683215559299, + 0.5799869382282803, + 0.3982093038393647, + 0.5318158824030951, + 0.34976846926983507, + 0.4266089614093609, + 0.411131290757622, + 0.5670503648663541, + 0.4903656940268436, + 0.44257953605430006, + 0.6217584451844562, + 0.3208552326223359, + 0.5985447600433582, + 0.31478451829482323, + 0.7256491659584081, + 0.7132645608506929, + 0.4703747296909979, + 0.5753049447745445, + 0.3615167102596069, + 0.568386095899952, + 0.609864118765197, + 0.3931712683326044, + 0.563092429185546, + 0.41575243628849134, + 0.36634030267783735, + 0.6617827633328844, + 0.5840767578142287, + 0.3268599547102886, + 0.47623572029249306, + 0.3422583096333222, + 0.6554969723236388, + 0.39369640396769756, + 0.6685454590137837, + 0.6091142942519547, + 0.5840922330795957, + 0.49171159349404836, + 0.3296793489787416, + 0.3707830379677336, + 0.45410448053714264, + 0.5996215103512152, + 0.5966153257516946, + 0.700048873406725, + 0.31149255503669027, + 0.7173222379394364, + 0.4923001545676179, + 0.6599558966022463, + 0.5136622114358893, + 0.6792195986237963, + 0.49474467062886607, + 0.35420320520463133, + 0.6634724215364742, + 0.7012593952416637, + 0.3456167961601936, + 0.67452456233174, + 0.34102539644042656, + 0.4229711594017956, + 0.3416642184675365, + 0.38294226393790487, + 0.48323105914997766, + 0.5175097555786304, + 0.7243126701491212, + 0.680527679802422, + 0.3163758687701694, + 0.710991967415564, + 0.4405420323535961, + 0.41640951644415986, + 0.6122362690451243, + 0.36474363177438607, + 0.3946336119710069, + 0.44955537477446894, + 0.3061131686380475, + 0.3807637489483983, + 0.5808379427055801, + 0.6156331717872123, + 0.30897693040945523, + 0.5818880470891714, + 0.684596427417492, + 0.6417794317171888, + 0.6911874602100249, + 0.5385495644845054, + 0.3102434601558278, + 0.6759914780298717, + 0.6075017271216836, + 0.47082729242350524, + 0.5560228407454662, + 0.5447846719125439, + 0.6277657541408659, + 0.33273154551756456, + 0.40585585359609444, + 0.4215312923168469, + 0.41887929284236947, + 0.42579354065251, + 0.4862045641584724, + 0.5646325303183963, + 0.44503933952501185, + 0.49326899755973996, + 0.45875989832666475, + 0.30440015270903614, + 0.5562041072777719, + 0.5377111714984584, + 0.43066269536669627, + 0.5138758515250403, + 0.4792863196019584, + 0.3903194195606087, + 0.35424478596564457, + 0.6128269744749535, + 0.6568687574319098, + 0.43677270430104587, + 0.5215765545871621, + 0.44889634366770637, + 0.32157371149169883, + 0.5022220644051346, + 0.5193572190830626, + 0.33860487518871984, + 0.5349608299517188, + 0.31210442339741906, + 0.547853730579269, + 0.6342284221249467, + 0.6273621201878021, + 0.3617147477657871, + 0.6562530637557724, + 0.3443109189094608, + 0.35865021056963803, + 0.34965262757341836, + 0.38620215973865624, + 0.4225735672548078, + 0.6021499845712514, + 0.3336461083980789, + 0.6345619073442783, + 0.4313369799339354, + 0.6225023669777479, + 0.49567535816893016, + 0.5800530218134756, + 0.6231450892556671, + 0.4655305101803466, + 0.301858576396887, + 0.471968891217053, + 0.5767162693220493, + 0.5253744462055852, + 0.5464621120430444, + 0.57072691045957, + 0.5667386814437012, + 0.6464134002155069, + 0.6175856269704971, + 0.5505265884027604, + 0.6536716786881794, + 0.42134344445794203, + 0.6154951018316878, + 0.5137316585653113, + 0.6346612819511648, + 0.4326171934305997, + 0.3478277878214576, + 0.5327935525509186, + 0.493975545182576, + 0.6111312381842142, + 0.3064533600074726, + 0.4666813654295421, + 0.423258196051624, + 0.36902474265882085, + 0.3082621714789178, + 0.6211014962609542, + 0.3549384902376631, + 0.570223991571535, + 0.3375842230222571, + 0.4503648651737172, + 0.3687835655579639, + 0.3170151104871518, + 0.4138159279211927, + 0.6055102000888304, + 0.5020094938703433, + 0.4661298816063416, + 0.34645534966070335, + 0.35115573743392925, + 0.6334605858846329, + 0.4851722401181461, + 0.3057158281026421, + 0.4374399361978888, + 0.595786351004401, + 0.4716063951507897, + 0.646609298845213, + 0.6276935130616625, + 0.6212945159681429, + 0.3809143606490723, + 0.36404496654710583, + 0.32855343899906353, + 0.49095809770433013, + 0.6317161958590489, + 0.48693033521702245, + 0.4717475807027287, + 0.38929967919111513, + 0.520781529741573, + 0.4657369948544968, + 0.5371495305700696, + 0.6235183261680808, + 0.6233501478352295, + 0.42343738392874963, + 0.5009412211665744, + 0.4332437321062428, + 0.3655937504162642, + 0.3952963201490231, + 0.6008299142945471, + 0.6106117662114741, + 0.5783987548930137, + 0.6105384394959277, + 0.4309448967643013, + 0.34966869447089866, + 0.570873856863353, + 0.3713986148829185, + 0.3025877486439014, + 0.4702038920621103, + 0.35712576760201364, + 0.49365587466381455, + 0.4065099907644202, + 0.41101772508080453, + 0.374152997853725, + 0.5898420203704571, + 0.4984790851216053, + 0.34336887241093045, + 0.6421901353322744, + 0.4297260205429778, + 0.4159547744698222, + 0.6362973355198577, + 0.39125548331056814, + 0.5835236877144434, + 0.4682279358486453, + 0.5593559786275801, + 0.5845989799807698, + 0.6380846700417986, + 0.49333259445989885, + 0.42648062483079335, + 0.37129196754274774, + 0.5340514943584347, + 0.4364377821487191, + 0.32115170550053634, + 0.4271595207579023, + 0.449817890464845, + 0.392459538308913, + 0.40840209398895755, + 0.309486087524166, + 0.6334958732759641, + 0.4162510758671128, + 0.3138238244215734, + 0.521068920325292, + 0.6523065522395013, + 0.6367566222799106, + 0.4145526557745183, + 0.428979527464241, + 0.6202501638438618, + 0.44435402685111686, + 0.40546554215386155, + 0.6495867464326659, + 0.6272227415900492, + 0.47607965658869034, + 0.4453086309464669, + 0.4614138716846712, + 0.5862762030991432, + 0.4232697465175091, + 0.4522774649550203, + 0.43165817905165016, + 0.39053810412013523, + 0.6329836559326658, + 0.3744933170938044, + 0.6178836601792472, + 0.629052991713291, + 0.434392346800513, + 0.4407967182020396, + 0.6294987391021407, + 0.3672314653221527, + 0.3196380911388805, + 0.3312284693213937, + 0.35277734605675837, + 0.5992794068634668, + 0.6503867551606769, + 0.5195000534714557, + 0.4542026061259374, + 0.3370941679116914, + 0.3705226675332478, + 0.36016222118883845, + 0.5532909965401682, + 0.31586488993301964, + 0.3656717219172802, + 0.5914032123709931, + 0.6342059420259845, + 0.3857474451674922, + 0.4816705565175815, + 0.3501944281806235, + 0.616015874322043, + 0.6496223494159477, + 0.5233983645255038, + 0.5035547307938414, + 0.35029332706480554, + 0.4268222355086707, + 0.324822698513646, + 0.45207674881781157, + 0.5534603736405255, + 0.30534906096430275, + 0.5578935398790574, + 0.434256728725987, + 0.30385613557709873, + 0.6050911762046511, + 0.6356919494326239, + 0.4459189391745299, + 0.6085889308107486, + 0.41212866345860527, + 0.5874503791281399, + 0.567998862220816, + 0.5006134900755423, + 0.4439992416008366, + 0.30849142829407783, + 0.5944356032672165, + 0.3144823819444969, + 0.6182898951222484, + 0.42759684525055, + 0.5851823345809533, + 0.4208530861374904, + 0.4910502480357962, + 0.3605598138911661, + 0.3177725531196574, + 0.3856024220016098, + 0.570905751223963, + 0.43645874086863423, + 0.46660497185384886, + 0.5896332971554862, + 0.5602520924437551, + 0.5035385977091452, + 0.5839397568892926, + 0.3539609191314304, + 0.44059885953810807, + 0.3180021460810522, + 0.31537842708972647, + 0.6490570954487218, + 0.40764845534488137, + 0.3378737781050523, + 0.5366870526596343, + 0.5033900425695353, + 0.40297142689445764, + 0.4526968339068015, + 0.34554297091289327, + 0.324648114843355, + 0.606705689647239, + 0.45505971878756024, + 0.3156482238308619, + 0.6105825954203371, + 0.41925108091163815, + 0.48068842017664926, + 0.4798584266927689, + 0.48014986032982265, + 0.32239911484579675, + 0.43505589556728225, + 0.6531598818612552, + 0.5254854193265507, + 0.30642391069596236, + 0.4965525899644022, + 0.5323511335026697, + 0.5608716168961002, + 0.44658888088173354, + 0.6249868650639068, + 0.35303707458467165, + 0.48253396162487294, + 0.46434887959420734, + 0.6251087463358412, + 0.6041047649795979, + 0.5892501089885624, + 0.5032295110196191, + 0.5659430315831655, + 0.5836661226566989, + 0.34207729607894566, + 0.41859295927219814, + 0.32437901054322055, + 0.42562480996060337, + 0.382032541811991, + 0.4825743983950713, + 0.38510176745455066, + 0.6327961540132919, + 0.6171833266671837, + 0.30541440032647815, + 0.6186600399162947, + 0.529867376204354, + 0.6487918556228018, + 0.5887438211464289, + 0.37341202451886973, + 0.48232740589758183, + 0.4080090383273004, + 0.5044048144902158, + 0.5253850280878399, + 0.6397829599056974, + 0.5919649580382229, + 0.3182512508096891, + 0.5536955519783777, + 0.552812807631426, + 0.5050930554071905, + 0.5420589460006285, + 0.5289466744764265, + 0.3571919976494685, + 0.5985961251825339, + 0.3623469141931732, + 0.5094936495009472, + 0.3499489218996035, + 0.5011187182238428, + 0.4464636807370349, + 0.6536520803875222, + 0.579093791098509, + 0.5567453751464919, + 0.4365852850711365, + 0.5760227095521024, + 0.6595146535383958, + 0.6197494805500985, + 0.46374290762636333, + 0.3801590850691457, + 0.34181403975519664, + 0.4174257605377968, + 0.6142799481344108, + 0.5868759930436465, + 0.6375862767568166, + 0.4495729043582818, + 0.33903947822851427, + 0.4146948541874349, + 0.5124076406214595, + 0.6371718405517782, + 0.3730915882385377, + 0.383183463537193, + 0.4421289562490336, + 0.488055238500648, + 0.6327293107738333, + 0.3028467242233654, + 0.6272008962997544, + 0.6278963483755047, + 0.5802705182233028, + 0.4115742751271808, + 0.62008015531005, + 0.5871088471684699, + 0.5200640349274726, + 0.3004851560442113, + 0.37604677397623293, + 0.61804932987228, + 0.5472196920937592, + 0.5837879780539615, + 0.30194200589150744, + 0.3528201900546326, + 0.6144667077911103, + 0.544469222200664, + 0.4262028633981116, + 0.5843276966395407, + 0.552139591053923, + 0.38211102849030126, + 0.40254524855879137, + 0.5735202888401247, + 0.5913238006725148, + 0.517136637690755, + 0.595197507987815, + 0.3327291783122316, + 0.4447487604618927, + 0.4725429936943639, + 0.45834614028944753, + 0.42081988086030714, + 0.31170105311844104, + 0.49454927867113835, + 0.3184711192345364, + 0.5946647178304256, + 0.5431787326129518, + 0.6481440444599602, + 0.5858023474460219, + 0.4572735459870899, + 0.4040523047180046, + 0.6173867689299278, + 0.4052010428155837, + 0.6057220604953035, + 0.5780503543844706, + 0.6269016744293048, + 0.49176727239238527, + 0.3923679932499368, + 0.3459934283075525, + 0.32577535421750997, + 0.6134215099033211, + 0.5932971529755675, + 0.5347821793555578, + 0.5908634764234612, + 0.6269299665799886, + 0.40621956013937854, + 0.4742454704577971, + 0.4941313998040797, + 0.5735512408306038, + 0.5630733628007674, + 0.5848570913532656, + 0.3387362772518724, + 0.3309586933094481, + 0.5639411994901391, + 0.34386136192180405, + 0.32462066779615406, + 0.6508727379069488, + 0.4772038991138341, + 0.4558122864736458, + 0.5513623835085705, + 0.6188297740418129, + 0.5461025929054024, + 0.3741932949771718, + 0.48379931870526216, + 0.43567257102893575, + 0.4737840365495971, + 0.6404025009255687, + 0.347113054091818, + 0.36354947635522944, + 0.4812017972067638, + 0.33562239795132354, + 0.4399847140716765, + 0.31076513332548383, + 0.40071331554248757, + 0.3155993842149972, + 0.30123674430666764, + 0.4185892523970484, + 0.35974480292781374, + 0.6458029122056756, + 0.5195818290157815, + 0.4004632278872437, + 0.48797119496795627, + 0.32444331704187535, + 0.5303736384938389, + 0.6431949262150722, + 0.44583236446903085, + 0.43022366645001453, + 0.4390200973025601, + 0.5452352917549437, + 0.3120902303599264, + 0.3253755453841242, + 0.41209690471950977, + 0.4569647665510965, + 0.3832204043784626, + 0.541607264256136, + 0.34306611923820535, + 0.6403177717147606, + 0.5611259665145347, + 0.5987990350293315, + 0.3115220796328142, + 0.36781755536947147, + 0.6002969386181679, + 0.5188725370636618, + 0.5597226015436485, + 0.5041050035835213, + 0.6213565106066807, + 0.36066946924393073, + 0.5740493163206408, + 0.5363805495850938, + 0.3552387025017052, + 0.5179803487137642, + 0.3852037521994845, + 0.6232859187405493, + 0.3225433775204136, + 0.45050981368865206, + 0.6288668590560234, + 0.6031484500027444, + 0.41919900494432016, + 0.44297891987935056, + 0.5048698551697419, + 0.5253583425089268, + 0.33432826604015486, + 0.5822760776081443, + 0.5508911987460334, + 0.35450311486129715, + 0.3055112233618789, + 0.37338031586230935, + 0.3006942678241796, + 0.5335103478795163, + 0.49064464689620124, + 0.42619306491614595, + 0.6595210011422368, + 0.3026447286574352, + 0.5956644340137063, + 0.4536050401174808, + 0.37569274895532223, + 0.5146039057210474, + 0.32674783601847146, + 0.5639853519576397, + 0.44318308374019133, + 0.38451929904519316, + 0.31229949361180076, + 0.5959235110964856, + 0.5968086287202823, + 0.3690274361819703, + 0.5125641084679884, + 0.3119453311560434, + 0.3111057759844188, + 0.6047825895616943, + 0.46452771627049133, + 0.58553381165687, + 0.5980001740472589, + 0.542327812410462, + 0.4793485837169884, + 0.38100419468001046, + 0.3191081005333039, + 0.43700685067418527, + 0.40336971152383666, + 0.4420240268062344, + 0.47426356601417075, + 0.6214263258383176, + 0.3628051358382306, + 0.41980498650519554, + 0.6431980217542848, + 0.5338576358038218, + 0.348865244206845, + 0.3120404803317741, + 0.48174914046189665, + 0.4567246988051316, + 0.42407190775501047, + 0.314871943061639, + 0.6481706406332854, + 0.3698553825256064, + 0.5550690231985913, + 0.3823556979559085, + 0.4809236227774012, + 0.5018905730134657, + 0.49033919958470923, + 0.6102375963533575, + 0.6258092595867839, + 0.37442891740306244, + 0.4509538215198835, + 0.5526464527403014, + 0.32248395509340316, + 0.3275072726183847, + 0.4348112232796069, + 0.3709719517964109, + 0.3513972980092003, + 0.577265788194547, + 0.3851208329785129, + 0.4743673457729021, + 0.48374544683988385, + 0.5690701357807191, + 0.6165280097724692, + 0.561465066546758, + 0.6523647929268603, + 0.643067354704275, + 0.4844443379524277, + 0.5019708574474071, + 0.605571604255702, + 0.6382518279134511, + 0.6448704859686039, + 0.459931928367509, + 0.49626859562957987, + 0.41825656021888374, + 0.6582196113001928, + 0.4239939909822735, + 0.3717223998838036, + 0.3771604670003206, + 0.45788540083918483, + 0.3639688050178628, + 0.6220724968000051, + 0.6542307445781622, + 0.6057937985409332, + 0.36689631892929225, + 0.613554966806191, + 0.3831472806692263, + 0.5259229692015993, + 0.5222658133690186, + 0.43590028203004283, + 0.3509208058245661, + 0.4260144915036601, + 0.426229943984274, + 0.5285313848036943, + 0.6478827876429574, + 0.5797921325161342, + 0.4658783455759627, + 0.5372662519428992, + 0.4559002087485263, + 0.5107443396419502, + 0.3774584267353918, + 0.6143306285888428, + 0.6117244139745402, + 0.39800106694236337, + 0.45529233367269917, + 0.46472337216403803, + 0.514725809218002, + 0.4698627394733151, + 0.4989247192557882, + 0.4953228073151813, + 0.41708643195037115, + 0.5928041371969022, + 0.535237113763627, + 0.477684269084175, + 0.3775088738632767, + 0.4097857651223362, + 0.4090246816527669, + 0.35584171175256113, + 0.4541784099520737, + 0.5418082299934528, + 0.45113616388473826, + 0.3578748562483164, + 0.6081391953086366, + 0.4378299682790767, + 0.609125909743493, + 0.33020610743819473, + 0.5005633471753539, + 0.32082982593766707, + 0.46160224724279963, + 0.4064463444913453, + 0.41401554532863394, + 0.4124127999433109, + 0.39678363495728175, + 0.3207671499562126, + 0.5241868880187468, + 0.4466218141196209, + 0.6531094979714555, + 0.5635213883778398, + 0.4903953567650411, + 0.5159904105949308, + 0.6244807796647553, + 0.5411135473372184, + 0.4679467913430482, + 0.45544261901019206, + 0.3016197089420546, + 0.48300379530868404, + 0.6431560209491585, + 0.5317012333375699, + 0.4127749524387625, + 0.4402205821990024, + 0.3205005223221719, + 0.3570598452275214, + 0.35435328487817086, + 0.3246452878041226, + 0.5635367903402398, + 0.5098591294476403, + 0.3573585195239652, + 0.4160021986246843, + 0.4991341478943885, + 0.31657413920697597, + 0.3415520662686969, + 0.5825785261642114, + 0.3352368119795151, + 0.582187892492751, + 0.34445271699405083, + 0.3241465550996861, + 0.43435847943740136, + 0.5001078880603467, + 0.6320240437569238, + 0.44670723238951415, + 0.32428780555703923, + 0.4168725606994062, + 0.6470830904626692, + 0.6184386133629282, + 0.47098025064915067, + 0.572410623799795, + 0.4689323691322512, + 0.7197834869927044, + 0.6316136315179945, + 0.4687060687684722, + 0.718350145305457, + 0.6210544200381978, + 0.4164560870702277, + 0.49660455843009227, + 0.42651259791277985, + 0.6366416605015804, + 0.41963255318956266, + 0.6815639405845236, + 0.4942458770923169, + 0.4457701199079257, + 0.4304656871959445, + 0.5726605311602486, + 0.5952342434325051, + 0.5334850560897563, + 0.712061659091562, + 0.4596354255367053, + 0.6481432009608036, + 0.4429806574675191, + 0.6936683749328715, + 0.4732765137455004, + 0.5107652719855185, + 0.4946944959272113, + 0.6197705371251389, + 0.5145686394766992, + 0.4123226891991845, + 0.6262704156503593, + 0.5502114982003901, + 0.6089622714220028, + 0.4208381871199702, + 0.50889496046486, + 0.5882408265388384, + 0.5018349117266481, + 0.5755694107713233, + 0.524633567657553, + 0.5894654516585807, + 0.45841324279123835, + 0.7262855936311863, + 0.49859273261469994, + 0.42332319027641774, + 0.713866535071107, + 0.43205676921911484, + 0.5229543297310608, + 0.4970715878453204, + 0.44689050595635704, + 0.4487788817504181, + 0.5119097229290483, + 0.6124760099924502, + 0.6992990528158575, + 0.6572069412585482, + 0.4937709453010411, + 0.5601770915651907, + 0.4286833570365185, + 0.7094959145054953, + 0.6890705019888392, + 0.5668520064683533, + 0.7248289633289096, + 0.6573379691850709, + 0.40710705978119055, + 0.6742309160911615, + 0.5162391534583356, + 0.47573820510376796, + 0.7178936853201172, + 0.519068988202345, + 0.6763070207250317, + 0.6952341896089019, + 0.41240736760412594, + 0.4463629713142131, + 0.4651658797020105, + 0.6019065794716125, + 0.6426493316953639, + 0.6295544305062699, + 0.5602354161281937, + 0.5920669428961444, + 0.601960722291391, + 0.6799619543937965, + 0.5253836892563345, + 0.5245313872416404, + 0.6949207441342642, + 0.5756208426497832, + 0.5884699041096879, + 0.46912326795661013, + 0.4181121788805962, + 0.6357033818634634, + 0.591907107777484, + 0.6536793266893888, + 0.707460648794008, + 0.46523017585939375, + 0.5440345050262176, + 0.7060333731892688, + 0.4613979775505949, + 0.6518375070174278, + 0.6554704029287515, + 0.48946537987575583, + 0.5019560035247468, + 0.5694207885140414, + 0.5959099927780799, + 0.6165964122832779, + 0.6500555667032312, + 0.47645422422410544, + 0.4050170464732677, + 0.546522971606198, + 0.48042325982817846, + 0.6314912353999629, + 0.6080838515197824, + 0.7144394066924811, + 0.5126817311961976, + 0.7143629440074974, + 0.5660588498006132, + 0.6714776017760689, + 0.6753418704362764, + 0.40040014610538904, + 0.4665932797838158, + 0.6727402699563753, + 0.7028774920817134, + 0.6232886823047772, + 0.5475432425378585, + 0.43009464810422277, + 0.49350032509074326, + 0.7146159932181151, + 0.48043292020396333, + 0.6518657492961231, + 0.5523805374812223, + 0.5675913935925546, + 0.5223641096248607, + 0.6085880388730782, + 0.46957317130061743, + 0.42706038032637633, + 0.4506462955044916, + 0.6204898719937951, + 0.5841610705447264, + 0.41907794481836164, + 0.6350764305885837, + 0.5156732262365857, + 0.5859597677604466, + 0.6902085197935259, + 0.6491726923040189, + 0.47202818979892436, + 0.6610810050686968, + 0.6902126817071319, + 0.5690339146185632, + 0.5168156344650957, + 0.6255338048373137, + 0.689356065047364, + 0.6573941664354706, + 0.6480429458956037, + 0.5940005105158144, + 0.6753843779133182, + 0.6177463385053678, + 0.6129567271996117, + 0.6508339688495697, + 0.7260224425147257, + 0.5301089746180845, + 0.5299221137436484, + 0.5373730863843508, + 0.4092212566040232, + 0.654784728272557, + 0.5485691498728045, + 0.6180705536513569, + 0.5042883402069099, + 0.6250116461883338, + 0.4087943673051093, + 0.6963506967502574, + 0.6450984150907078, + 0.6710565642112627, + 0.5138994609565714, + 0.6728745637038989, + 0.6140040678874927, + 0.6124735545984926, + 0.4023191469549778, + 0.7251025930578976, + 0.44472694418247594, + 0.4269434258159559, + 0.7145397147259149, + 0.6158454927053456, + 0.5026026978056019, + 0.6351386451466535, + 0.6326141526655852, + 0.685105041397038, + 0.6681528113069954, + 0.5117756166030557, + 0.6902158678850396, + 0.6076480340370837, + 0.4534739208322089, + 0.5811962120703589, + 0.6901046415077833, + 0.6841274354171167, + 0.49056279581674556, + 0.6908005569981508, + 0.4433466153562218, + 0.440914540165169, + 0.5385789608943915, + 0.5639408803569758, + 0.48852938334011997, + 0.6142840812094663, + 0.46735645376110124, + 0.582035002682348, + 0.4534090413120068, + 0.6243030026211065, + 0.5803186620395626, + 0.5126604679547758, + 0.4714031330459305, + 0.5957490771602858, + 0.44395495292877674, + 0.5360509788489827, + 0.44026550080361215, + 0.41255676794473795, + 0.5022670163729497, + 0.6868518253751315, + 0.7270510952335061, + 0.5692686741635848, + 0.587372929671657, + 0.40190066748260317, + 0.5779417619949474, + 0.6713533514908641, + 0.49924960155851156, + 0.631585231273026, + 0.7269992339062916, + 0.5223905650512098, + 0.692058938606886, + 0.666510185790488, + 0.5027791845612649, + 0.7077197500146972, + 0.6982775649980968, + 0.43982564417218334, + 0.5173951510748156, + 0.4601304877194853, + 0.4203530637213925, + 0.4058236302770923, + 0.5379156793199351, + 0.4494841161342137, + 0.5787472056654933, + 0.557346580203431, + 0.612120752611783, + 0.550854170443685, + 0.6471277899593189, + 0.6087147254323042, + 0.5730967048198603, + 0.4001435906447169, + 0.5193686339475748, + 0.6323234170439205, + 0.6513369194779772, + 0.6434402464542841, + 0.4230028911720501, + 0.45727003088860607, + 0.4644176261944458, + 0.5401340348837511, + 0.45764705678635126, + 0.6725242424723166, + 0.5451189830535077, + 0.6781270835558384, + 0.5031620234883163, + 0.6298827852383095, + 0.5720033286713136, + 0.4000693449677106, + 0.4057087712113597, + 0.42204098727197803, + 0.6590457734375734, + 0.4344829651218552, + 0.6293691222155546, + 0.7074079457510306, + 0.6953457912257228, + 0.6622703458856337, + 0.6619426667220114, + 0.6813367901563063, + 0.716569548097565, + 0.4668520546674594, + 0.5452112442110254, + 0.7135529961755336, + 0.4173814447363607, + 0.7055914663847287, + 0.5465516553525196, + 0.5243589744900058, + 0.47476662012493426, + 0.5475490917387563, + 0.4800632299283459, + 0.5458378900347058, + 0.5097661045194443, + 0.7261107653161366, + 0.6941486430542376, + 0.5310655058707794, + 0.415644028029298, + 0.49367309024408823, + 0.5162439709357783, + 0.4489492758415089, + 0.5316652102335748, + 0.5093525297923611, + 0.510517568689326, + 0.6158974317494399, + 0.47763760487697227, + 0.6727542940410356, + 0.7108706828081125, + 0.5356368741409279, + 0.5249253885976933, + 0.41936340066575567, + 0.5206337962888683, + 0.6499477281544885, + 0.7087894964144852, + 0.6400935553326621, + 0.4204569531238562, + 0.6700508799810572, + 0.4568435982764736, + 0.4756231597697755, + 0.7166207930993505, + 0.4704375836120589, + 0.6273688237442504, + 0.6236402251970392, + 0.6496141112649226, + 0.5155659865604727, + 0.7257395508634432, + 0.42495962676142857, + 0.4995303679794203, + 0.47770199152713994, + 0.6455648142197309, + 0.6197438855633046, + 0.5760017778741467, + 0.7064124141634323, + 0.5952894246384737, + 0.5426317255115262, + 0.6177567103296489, + 0.5309929412004104, + 0.5539452961753389, + 0.5383124929792538, + 0.5782933227925827, + 0.5532171375416454, + 0.6709790222483929, + 0.5977389157641557, + 0.535564717535628, + 0.7243968795406612, + 0.4218861078613222, + 0.401293695053836, + 0.575172297380878, + 0.5359233867872996, + 0.6492506893837728, + 0.6849005741125974, + 0.5912287835435809, + 0.5153276837486633, + 0.6167520098742191, + 0.46060099180936015, + 0.653931620689449, + 0.5787305630127745, + 0.40415212779792514, + 0.500427269401813, + 0.47533155655672354, + 0.6008711676464067, + 0.6531938143144096, + 0.5731903221445871, + 0.5833182684976805, + 0.5581883469389973, + 0.6883006445783593, + 0.4965259925471431, + 0.6350330812522669, + 0.4285897801751181, + 0.6126905045715119, + 0.49079360484762624, + 0.6548664126043668, + 0.5607838312668035, + 0.5231373105820407, + 0.6205404152676071, + 0.40890716530542287, + 0.6200561985459652, + 0.5735296581056278, + 0.5140507864529466, + 0.613177674193633, + 0.6198673528818213, + 0.5206310014090613, + 0.687436979991149, + 0.6084211838010833, + 0.6661569300373088, + 0.438840041883516, + 0.6602087436831393, + 0.6390301131974396, + 0.5390479047155025, + 0.5156044436021643, + 0.5171696522183485, + 0.4954997281718294, + 0.6599868293375564, + 0.561629102778199, + 0.7160204541558473, + 0.723448159229608, + 0.6665808035181517, + 0.5593480432729796, + 0.5896276958242563, + 0.5882251799449669, + 0.47780790927529493, + 0.5363459471917551, + 0.7082092299280326, + 0.450207407523733, + 0.4746981666745122, + 0.6173846287322698, + 0.46621648464431703, + 0.5942031031340906, + 0.43390418735059394, + 0.5669023021635455, + 0.5165173578354999, + 0.6460489775685752, + 0.4453840399959637, + 0.6572821593043314, + 0.7185278636777748, + 0.631625203730624, + 0.414745413793755, + 0.6909837028526306, + 0.5558263691741704, + 0.5760977877929498, + 0.625099766772646, + 0.5027928727248834, + 0.5571115367354825, + 0.6417916401430903, + 0.5231257550031646, + 0.5755754108850929, + 0.7113219341373611, + 0.6802041539525232, + 0.47064943329224146, + 0.4364868612489419, + 0.6500463142577353, + 0.5473030023532187, + 0.4525720454678631, + 0.4206324712010905, + 0.4082841864152971, + 0.4200889141808819, + 0.6455112403403958, + 0.7052443031462612, + 0.4297883006134099, + 0.4167837069105667, + 0.4423726686932946, + 0.5207522926919259, + 0.5602517222981142, + 0.6812905024361913, + 0.7247582669930479, + 0.5721678278412293, + 0.5400788518602024, + 0.6709783542834045, + 0.6828270550807026, + 0.6717961660252436, + 0.4884274149280591, + 0.5545331853208774, + 0.71685660558059, + 0.632604501268535, + 0.7252326338264424, + 0.6097050508966383, + 0.4151132085261964, + 0.7261165716799243, + 0.5769163390433321, + 0.5048053851270932, + 0.5776505882642242, + 0.4891767512579941, + 0.6437301599699847, + 0.6797905666389702, + 0.6254729905067826, + 0.5194475952370308, + 0.7100236914659049, + 0.43750246531847686, + 0.40032137087920133, + 0.5330415343227557, + 0.5019920647661898, + 0.6458388689666033, + 0.45974559555796224, + 0.5383368287260067, + 0.4524700276688782, + 0.5080641566504269, + 0.4592273612826011, + 0.47594964978791887, + 0.5231275559691149, + 0.655269300086448, + 0.5476840454497682, + 0.4440819377096666, + 0.40786561057865706, + 0.635517972062976, + 0.6906933604034553, + 0.4178055429610969, + 0.6141825479825689, + 0.6763278736121052, + 0.6952487653685686, + 0.4849715023193522, + 0.5275336342593584, + 0.5167818834376335, + 0.42242663929060453, + 0.6373653691395047, + 0.4325720471141161, + 0.5995417654473569, + 0.5976632525940264, + 0.6824933041459088, + 0.40919405650571444, + 0.5503412892380459, + 0.7249782809712398, + 0.6297507652666274, + 0.4269794607094019, + 0.49929580164731147, + 0.6231603519232011, + 0.6170568708116694, + 0.4152692095548012, + 0.6441077807246715, + 0.574841581878357, + 0.7251792539646047, + 0.6704744405389109, + 0.5224537390553128, + 0.5626984797033743, + 0.48314479147975836, + 0.5363743257095168, + 0.6096530526532637, + 0.6265704284821443, + 0.4227728396202452, + 0.6721148474569805, + 0.5954600817217537, + 0.49986202953395464, + 0.4458418823773215, + 0.7055626816009821, + 0.6159606308786638, + 0.5363068793316683, + 0.654791501057649, + 0.5117761735391819, + 0.463188951108517, + 0.7258819519207759, + 0.4877493417617016, + 0.681810501619456, + 0.5201965704760291, + 0.4175780546854469, + 0.5550519067610347, + 0.6453541250389149, + 0.4421285089737912, + 0.6558712876991808, + 0.43317067763578404, + 0.455675768558564, + 0.6471408827179798, + 0.719758878584056, + 0.5978179958364884, + 0.4189066825909029, + 0.5874356921140906, + 0.48307821042075333, + 0.40638748229989036, + 0.5284851386245722, + 0.7041139305532125, + 0.6156791881526344, + 0.4137371346751112, + 0.4132284426909691, + 0.4209004900351835, + 0.5966857447958254, + 0.704344002609382, + 0.7113052310091987, + 0.4813088641608674, + 0.46541688983416474, + 0.4008701051756629, + 0.5135468661781041, + 0.7194875780026433, + 0.412250344279006, + 0.4493475611165865, + 0.5280934510905901, + 0.5091596544047805, + 0.6741212157042916, + 0.6301820761230689, + 0.4193975426040414, + 0.6006300725832298, + 0.6281296441580948, + 0.6409537275113707, + 0.5842317492875457, + 0.6689033889606171, + 0.5165759373843724, + 0.61170317893946, + 0.5731989976597218, + 0.6696102018015517, + 0.5992811616158567, + 0.5759876799509691, + 0.5662461350957158, + 0.5327895983300144, + 0.6203699123339332, + 0.5623652897464301, + 0.7065640748238113, + 0.6135566418672145, + 0.4867001288975257, + 0.5836359954653818, + 0.5855920905174156, + 0.721154819240945, + 0.6139923936389076, + 0.44987789669208267, + 0.6956427363236091, + 0.5861786691368709, + 0.41320267426869745, + 0.41084731641402855, + 0.5197983056437353, + 0.6043967333543292, + 0.536984890904068, + 0.4729585301838772, + 0.4728639685916926, + 0.5411511938068296, + 0.6818699738284572, + 0.4129121283614525, + 0.6829491419469944, + 0.5486658307751844, + 0.6982578143865932, + 0.5366828825867126, + 0.5415089150894549, + 0.6266189798123297, + 0.7179600144996415, + 0.5389532668053743, + 0.6761610351080105, + 0.6714384874183985, + 0.5113687838089486, + 0.44872483794162177, + 0.6374489737441251, + 0.715205311587156, + 0.6434959013933572, + 0.7140749079042126, + 0.6160104752965481, + 0.6902867980436744, + 0.43906698552309514, + 0.5569454117466819, + 0.47750478280673936, + 0.5383503482496566, + 0.5080115573645583, + 0.5403976975712427, + 0.6478884112620085, + 0.533018096543207, + 0.5611913935127509, + 0.4245615692690531, + 0.707997144616024, + 0.5667796977975552, + 0.6416557614674885, + 0.6082288718055453, + 0.7242901034221417, + 0.6144708294367085, + 0.6242391444204564, + 0.6249889034854758, + 0.7155661650130227, + 0.4332181111787017, + 0.6895552445705087, + 0.5006528560987517, + 0.5388089418881519, + 0.555831570988957, + 0.4515046621267364, + 0.5255770778497836, + 0.46936423144692496, + 0.618300232442527, + 0.6505128150361288, + 0.5304460965046816, + 0.7057325386609115, + 0.5619904910109542, + 0.5661023265132585, + 0.5417395637103966, + 0.5822858315338123, + 0.46107375238616777, + 0.4264794011914284, + 0.43849576903312115, + 0.666653639416823, + 0.5537985571673644, + 0.5576702309498746, + 0.66392204568011, + 0.48126609151443855, + 0.46131190745139167, + 0.4919748959618164, + 0.717904682469548, + 0.597367397419093, + 0.6510402474816981, + 0.5262644602516288, + 0.47147175509503086, + 0.42423246951973403, + 0.4241640412030545, + 0.45399576470222863, + 0.4771402267112912, + 0.5831813306722519, + 0.4268438279216966, + 0.47267333766205616, + 0.4657493265648575, + 0.4534690774257083, + 0.49821094269066923, + 0.6534913217200762, + 0.5847004002190924, + 0.6529136199371431, + 0.4221399253204602, + 0.443360435405088, + 0.4563533540546499, + 0.6752880657174818, + 0.7209445845191833, + 0.5236539962400077, + 0.45130478830794785, + 0.4190754027552134, + 0.5863342139777077, + 0.6952325325974715, + 0.7119992993658559, + 0.6776948064838351, + 0.5354031418121219, + 0.6046719285681237, + 0.7151523084204873, + 0.5999339794355842, + 0.6246832398960482, + 0.6186437154068657, + 0.7126338067272258, + 0.42112990628579605, + 0.5302805070091605, + 0.4772813847263648, + 0.4785548019825619, + 0.5236647161346651, + 0.41938360530342456, + 0.6271886066089976, + 0.4144300560278827, + 0.5391223003719716, + 0.6351470900532941, + 0.6233298977212194, + 0.40162211514590745, + 0.6570811244025845, + 0.45674606558827036, + 0.5472432682801092, + 0.6984784614893961, + 0.472968530208544, + 0.5216218961514655, + 0.6898009882865046, + 0.5551346371003414, + 0.42507818326470515, + 0.4982518466125969, + 0.5856046373538031, + 0.5446624769899603, + 0.5382128974287614, + 0.5176132573855343, + 0.487787378133819, + 0.7105479627634399, + 0.7006557469267867, + 0.45577814792236865, + 0.6851460971382266, + 0.703617783270291, + 0.6453747846216382, + 0.6723515178715591, + 0.4043954888836961, + 0.41325019555430503, + 0.4114467702390985, + 0.4657656215005246, + 0.6205632494520635, + 0.653861013128249, + 0.4006420023815259, + 0.4221185770218215, + 0.717071256271558, + 0.6865537727356577, + 0.44117050369440464, + 0.43273116393509303, + 0.45178856031251124, + 0.6776042150271471, + 0.5555436303221393, + 0.5653921019072848, + 0.653232943381167, + 0.632166138908776, + 0.5621074738043288, + 0.47700535757063656, + 0.6137379986396485, + 0.4481928055386387, + 0.7050999490550993, + 0.47994391983767803, + 0.43251115044416005, + 0.47131987878526416, + 0.7178939331485092, + 0.703608303559205, + 0.6523264694606545, + 0.4628514908465152, + 0.6551343189682841, + 0.41701425169121203, + 0.6255082668510072, + 0.42636316047081385, + 0.6617073330940219, + 0.6892863499988325, + 0.4068209762269848, + 0.6990347625611235, + 0.6503888953980779, + 0.6300720117581503, + 0.6975946690512684, + 0.5718278888643811, + 0.6782237410235162, + 0.6530593899328014, + 0.6958235564649197, + 0.6621010355355577, + 0.45275528394121384, + 0.5865474171655255, + 0.586716795063611, + 0.6968608875440383, + 0.6339378186216411, + 0.6885641102685263, + 0.70109610838306, + 0.668235996034617, + 0.7124321869723127, + 0.6811754565098469, + 0.5191214128959654, + 0.5543609915501745, + 0.5181526358323152, + 0.4736039961195086, + 0.44921728709351083, + 0.5538844924035562, + 0.4440752725607888, + 0.6867934753223393, + 0.565977269514002, + 0.47652266540542165, + 0.6866095752336953, + 0.6173387993886688, + 0.46612549455321106, + 0.6546398740904702, + 0.4189535925431774, + 0.6518599798192204, + 0.4303868452107261, + 0.6133719544586819, + 0.4066917762990364, + 0.595616277049412, + 0.5986477392055306, + 0.7074239399470463, + 0.6442462400962975, + 0.5666125959335597, + 0.5159175718036176, + 0.4298103174068968, + 0.40237989016164205, + 0.5573716210656234, + 0.4496387945888264, + 0.6896799932864028, + 0.6126443566518532, + 0.7264337312117546, + 0.409641024244968, + 0.48312687744337485, + 0.5664980627157217, + 0.43532819495530856, + 0.5373291606307601, + 0.48747252916467565, + 0.41823060284845975, + 0.5016488711599231, + 0.6679868698596192, + 0.6026422573334544, + 0.4644243976372694, + 0.6546982738036226, + 0.5503125355285614, + 0.7264593231569356, + 0.664327425488894, + 0.43741720767776815, + 0.48920537084837284, + 0.42029251014585123, + 0.576033925702679, + 0.455184757630851, + 0.43748614508917494, + 0.6087545627872861, + 0.401617657429981, + 0.7158628082729731, + 0.5899308426543204, + 0.515350185744781, + 0.5862518649536115, + 0.6961066972646458, + 0.6526592155310497, + 0.617638631686051, + 0.46897802859763493, + 0.4088915254977389, + 0.4148217195949384, + 0.6649125018281795, + 0.601175467987554, + 0.6827757403362155, + 0.6405335116770654, + 0.45636843454955395, + 0.6912462366237, + 0.4439438521422107, + 0.6752245306784146, + 0.49186629162040735, + 0.6274289284551264, + 0.5231839872173405, + 0.6495980646948716, + 0.5658824172548523, + 0.4055642639077962, + 0.5872267291002973, + 0.6895140324052937, + 0.4318289252625331, + 0.5034706133827413, + 0.4687056998547624, + 0.47603097015650314, + 0.5675703316670719, + 0.5161179598113267, + 0.5489294174324713, + 0.6767870252740629, + 0.42152672843055145, + 0.6096627473878324, + 0.6612868978332902, + 0.4076304064412046, + 0.4450008472849717, + 0.5289772716548058, + 0.40112031317464264, + 0.4215961378866302, + 0.5592406430933472, + 0.713413286122262, + 0.4737367466624648, + 0.6039634090997081, + 0.7052279873137033, + 0.6968441302832067, + 0.6717632392311241, + 0.6371736948292631, + 0.6080395704965543, + 0.7132033248392864, + 0.6943835520228634, + 0.4591745265330334, + 0.5170495071532383, + 0.49740165926443, + 0.47585455760384315, + 0.6457446561682721, + 0.4707830566295035, + 0.5441379113873516, + 0.44628134142023956, + 0.5152556965201411, + 0.6604104399499844, + 0.5404103528638075, + 0.6375105105888176, + 0.5376642520975137, + 0.4261753220714098, + 0.4936387003967693, + 0.5827748798783091, + 0.4433055935468915, + 0.46861106797382135, + 0.6392024570121524, + 0.583543314685016, + 0.4335608522240492, + 0.6794903047653413, + 0.5183326710219917, + 0.5053907603475029, + 0.517103951022083, + 0.6295375101477272, + 0.4311354957639444, + 0.5654470132279484, + 0.4981706289560788, + 0.5307969266952591, + 0.653087522527607, + 0.6012379892453387, + 0.5814439323483648, + 0.4609110960761476, + 0.5030747347179433, + 0.5125358649839317, + 0.4936349734314984, + 0.6403611271096342, + 0.6545111156588586, + 0.5752369323456998, + 0.5876304857717114, + 0.673894884016802, + 0.5162902795903327, + 0.4565879563515173, + 0.5882577453813462, + 0.40665275181917687, + 0.6837654990656581, + 0.443167784285489, + 0.46456048668959093, + 0.6998690718636913, + 0.6260668079409449, + 0.5039856823101784, + 0.6801390739254543, + 0.5424297918371118, + 0.4626986108631884, + 0.685612392894929, + 0.594944709143918, + 0.5482234783451572, + 0.507748370088445, + 0.6847479016905805, + 0.5457154680317343, + 0.4687468868528556, + 0.44402761232888455, + 0.702980487210371, + 0.4602436251782695, + 0.44624156066853415, + 0.6902126005299993, + 0.4864928649099596, + 0.588782923582001, + 0.5751195115805777, + 0.5807466856738689, + 0.5275651623962339, + 0.4236054166841978, + 0.5876300817616241, + 0.5665939344252964, + 0.4102709936917224, + 0.43538180349923156, + 0.5111174145647122, + 0.6829584225225879, + 0.6842739919068195, + 0.5558931206588477, + 0.43294789707986653, + 0.552442548198554, + 0.6809564469013266, + 0.5295745622156686, + 0.5512539307579452, + 0.4013651715132158, + 0.49525026966585445, + 0.6465865359237442, + 0.5411528281814435, + 0.581624718205495, + 0.5969588773869997, + 0.5509570505894337, + 0.5304303836483, + 0.44229884051474966, + 0.5531765955201711, + 0.45683390908994176, + 0.6635080020059632, + 0.4175758530804021, + 0.6333542881702622, + 0.6186649247459707, + 0.7206149428872407, + 0.5263058211405458, + 0.42883172637389616, + 0.4891868608995578, + 0.481981512547775, + 0.720818319059757, + 0.7248238838392187, + 0.4492352612154196, + 0.5176551510800828, + 0.6233378892149942, + 0.510259395046295, + 0.5927173624145947, + 0.45327838589472946, + 0.5898677426131322, + 0.6345330800780141, + 0.5023945000869443, + 0.47588143721027787, + 0.6302175746478136, + 0.5353991823162211, + 0.6093405065866229, + 0.4488538816093861, + 0.5196419382375799, + 0.6684204965418636, + 0.4754685196602758, + 0.7142446568768253, + 0.5868140054492265, + 0.5530283759246069, + 0.5831669381905328, + 0.4759760319631825, + 0.5900548468813153, + 0.5819107300934969, + 0.5323869507033336, + 0.4494159284429817, + 0.4102789562305654, + 0.4891024816386411, + 0.49837496650470375, + 0.697705206005248, + 0.7048549154019703, + 0.722952971721257, + 0.5312353173672706, + 0.5058620653198383, + 0.4089644158063124, + 0.5096943743782606, + 0.6139647289146926, + 0.6058554897178329, + 0.6974638826587896, + 0.5287102253700738, + 0.4492147301446179, + 0.43686868789190103, + 0.6463830071699934, + 0.4658189160651792, + 0.4414685003588095, + 0.6299039619308752, + 0.6089180508809366, + 0.5253477302504737, + 0.46876839650785707, + 0.522885737885001, + 0.7270460040793952, + 0.40191072825328555, + 0.6905135166519678, + 0.5694602430547163, + 0.5606250377450421, + 0.6478325059092228, + 0.5335534218135202, + 0.4957802628251513, + 0.7214512442557792, + 0.6911315255418387, + 0.5510500783346745, + 0.5407702378813009, + 0.6502680875653553, + 0.42656216431182253, + 0.5707624472105637, + 0.48985475581800864, + 0.4016857609538194, + 0.5145945745552559, + 0.5767815952691516, + 0.6694572137055548, + 0.6712825427394487, + 0.5445735596791028, + 0.7187202491058979, + 0.5401791303841791, + 0.5416385303992002, + 0.6731769039950797, + 0.5771716665813507, + 0.4824644818810431, + 0.5384433641894675, + 0.6637949144230897, + 0.6774240298939378, + 0.7193300740858152, + 0.48593869127417655, + 0.703005737184693, + 0.5650070766186055, + 0.6511375723592353, + 0.5798594100324155, + 0.6343437528224476, + 0.7077347613232232, + 0.664116061936254, + 0.43434691618335763, + 0.5038556474589082, + 0.4146495576718123, + 0.6632776237378617, + 0.4770356167283348, + 0.425996329560935, + 0.47935074985311776, + 0.4971624131079573, + 0.52362160520167, + 0.48258774766443036, + 0.42732183592672063, + 0.7261421334871657, + 0.48064871041231244, + 0.6165426151163088, + 0.5907940477604833, + 0.641238891496446, + 0.4973066614167373, + 0.5069434625412996, + 0.4613502679550699, + 0.4650907080412108, + 0.5005988340557661, + 0.6640979276674402, + 0.6032405848057596, + 0.650853608861165, + 0.6342784465500015, + 0.7162655177464898, + 0.4547424777264968, + 0.48354298350732566, + 0.4764331336342098, + 0.59391931857626, + 0.6304865355623195, + 0.6079246782735758, + 0.5717600387430426, + 0.5178616293988079, + 0.5692653320207901, + 0.6418657270568721, + 0.42220681157710144, + 0.4573422358747409, + 0.4348785018624498, + 0.6757965690759052, + 0.5105163207517038, + 0.6472538825447044, + 0.40059465307175035, + 0.5507618051992414, + 0.4882666847536532, + 0.6492986622497323, + 0.5173456012233368, + 0.5139993443019116, + 0.4672932443927459, + 0.4781732961287617, + 0.5253250005037307, + 0.474482801689898, + 0.5530526409228408, + 0.6635478575226159, + 0.5164641644059131, + 0.5764165348170758, + 0.5908865326232763, + 0.4682307661157933, + 0.6969560414464336, + 0.5337077065459579, + 0.6582571203722987, + 0.513871209576529, + 0.6124847638169355, + 0.6567650853799982, + 0.6006382447065735, + 0.5089984195645985, + 0.7225207672409719, + 0.4261121639231001, + 0.5932103668004136, + 0.4793318256921878, + 0.7226873352570469, + 0.4548940585589247, + 0.6163547816902897, + 0.7073468263578984, + 0.5035476691178962, + 0.6479007918308086, + 0.43040146735075946, + 0.59599882331109, + 0.45142202437912804, + 0.5653502896406373, + 0.6034024152670383, + 0.5184543009529883, + 0.4182440689953747, + 0.5909060486969917, + 0.5492827344692287, + 0.5540512306542416, + 0.504661556569054, + 0.4280883363123325, + 0.7253731237393569, + 0.5279529581908259, + 0.6068979918533415, + 0.47082209301253686, + 0.6757204134072765, + 0.42517739982119057, + 0.4376336000336328, + 0.4288494612782382, + 0.6328772869618068, + 0.40480602688278666, + 0.716244329136748, + 0.5762263542039207, + 0.4829785728869611, + 0.5975717492657098, + 0.46009589638637066, + 0.5071048389306871, + 0.48617120305977046, + 0.4752348670408676, + 0.6919926420334357, + 0.6467873162316662, + 0.704477065834878, + 0.5953507589694115, + 0.46996564105808675, + 0.4840081327083677, + 0.5433323697273233, + 0.6744226846813568, + 0.4935098984312737, + 0.436579490119959, + 0.5184049332222274, + 0.5547353618827753, + 0.6785873077593901, + 0.487345554472419, + 0.552088795647166, + 0.5185168048913598, + 0.713173598680465, + 0.7068945531814059, + 0.537984097537089, + 0.652598335803899, + 0.4985336807883104, + 0.580871064061875, + 0.41486699688231876, + 0.4899820804852233, + 0.4972845556218465, + 0.5795211914642043, + 0.6778202406374392, + 0.6716520967316356, + 0.6008527675307724, + 0.6016985728980717, + 0.6062677378339456, + 0.681746235329759, + 0.6527529139054005, + 0.5117807845900504, + 0.47631729922448585, + 0.5588174115288728, + 0.5631577051662174, + 0.5723447938021089, + 0.590485562330798, + 0.6732820431119091, + 0.66716771932047, + 0.6083906805108639, + 0.5322042770774056, + 0.44135538450994904, + 0.5731495170789993, + 0.6081573432926339, + 0.5220167791849478, + 0.49808089173313963, + 0.40835055232606554, + 0.4110117695683997, + 0.44988973122092746, + 0.42452729021967084, + 0.6556279921413435, + 0.44484957667191977, + 0.64193964929236, + 0.7260752041324244, + 0.4629515201284684, + 0.49099689679371217, + 0.5461762164931631, + 0.4822335234689162, + 0.6549310470404883, + 0.4965106735622709, + 0.6924619787130168, + 0.682484915479812, + 0.5001257494741765, + 0.6408708547009532, + 0.5055997408813717, + 0.5366787308271265, + 0.5623859784983327, + 0.5067661438964589, + 0.7081323867146623, + 0.6164168157039912, + 0.5534550365649487, + 0.5076662645923985, + 0.46272138876700447, + 0.4364345409677805, + 0.48389665820909306, + 0.4113351046948784, + 0.4012515614945821, + 0.6207720800380874, + 0.5961513547378744, + 0.5708653270528634, + 0.5483787881495392, + 0.40780914702429105, + 0.618640131323588, + 0.6293227801393178, + 0.5366624727510629, + 0.5612815016216522, + 0.5752739683273256, + 0.4319656694925026, + 0.512568429622798, + 0.43294745239730825, + 0.48189996418048087, + 0.6077162174797164, + 0.46467304013277677, + 0.6162283932552663, + 0.41831516764947607, + 0.5398292215406648, + 0.48388742847477895, + 0.5234673127237562, + 0.464135053282446, + 0.5735752402952795, + 0.45163053409201187, + 0.6386316125271752, + 0.5716817267184622, + 0.46992539927830274, + 0.6368255739087946, + 0.5915977475969985, + 0.4869333508379078, + 0.4474536919444014, + 0.5072267481795428, + 0.4622044971575666, + 0.6400037060349231, + 0.5337432405657528, + 0.5771704834155441, + 0.6251573731419591, + 0.6071074994532331, + 0.5499464270377855, + 0.5783257691480232, + 0.6323959216359918, + 0.6299743021974435, + 0.6343377597052489, + 0.6012028675512113, + 0.649442380497861, + 0.47042151171370833, + 0.6367775571591908, + 0.5017560203584681, + 0.5237476419727898, + 0.594611765756906, + 0.6522048110652325, + 0.5880077161126656, + 0.5101207263053195, + 0.4355810669367769, + 0.5736628672317214, + 0.44991193852078804, + 0.4972190529418692, + 0.4553790129714437, + 0.6522353004498564, + 0.4889846831831124, + 0.6071448083726405, + 0.6116716225133615, + 0.6471835934568928, + 0.5922143577099509, + 0.5087543881189583, + 0.4077416483591938, + 0.5123242524652428, + 0.6521490935029612, + 0.5121072964829457, + 0.5928070823981054, + 0.4123423755767302, + 0.6396315602763438, + 0.598786892950782, + 0.6346358175707976, + 0.5558692099452586, + 0.41940099747313275, + 0.549236264251703, + 0.457155369806929, + 0.46768044077469456, + 0.5752691213751319, + 0.6063436880860669, + 0.46080114683209444, + 0.41628561549226556, + 0.586878042995265, + 0.40057104196552157, + 0.5500987629625038, + 0.48140640156015924, + 0.5460325650906033, + 0.5574981671023108, + 0.4973023880619814, + 0.46541266017591887, + 0.4986814804967506, + 0.4139698089696885, + 0.5486182217055481, + 0.4360394175988678, + 0.5084753050487986, + 0.5854231016597677, + 0.6158975497891761, + 0.42671566628190405, + 0.6171787511965658, + 0.40055696756925874, + 0.40093360679028706, + 0.518481046606757, + 0.6454545666068143, + 0.6299823581676112, + 0.5104955494047165, + 0.6422402825143452, + 0.6380769308287103, + 0.5932140597559574, + 0.515033406266093, + 0.6477781281058462, + 0.44477818303358646, + 0.5750185589219238, + 0.6460149202368703, + 0.4357432806262208, + 0.6138467588945533, + 0.441436545797242, + 0.44950907557997566, + 0.6048225400529006, + 0.5787204133797021, + 0.6536952688990205, + 0.5008921781036141, + 0.46913214896678307, + 0.45559624440476737, + 0.5593363497966823, + 0.560556643114336, + 0.5609793902196034, + 0.5184953944162378, + 0.4899926943129563, + 0.6545880951172638, + 0.48920648438696357, + 0.5513543721014339, + 0.5657819667755097, + 0.5803559890766095, + 0.47331509575675934, + 0.42744962487064686, + 0.4195089757913908, + 0.4855163856934827, + 0.6523250578830628, + 0.4545660423689727, + 0.5327962194924732, + 0.6230059043194983, + 0.5029984307671527, + 0.45032286463408977, + 0.5196921375195644, + 0.5436391850079063, + 0.42342411639713634, + 0.5804084123199116, + 0.5643855466014904, + 0.4767024209637876, + 0.535707461407084, + 0.6383805549973335, + 0.5282668698801886, + 0.435922736409369, + 0.5875448215258422, + 0.5598682533664909, + 0.5190529454921466, + 0.5815354582266474, + 0.46319020574952036, + 0.4235765446494151, + 0.6464894738039263, + 0.5707007414308338, + 0.5572614014309527, + 0.5454816957188213, + 0.5531063736458377, + 0.5044440854779821, + 0.6155749497271521, + 0.6078610820552387, + 0.4624476341541934, + 0.48863407173367274, + 0.5618201199929186, + 0.438023057358969, + 0.43123007183520373, + 0.4504703049562432, + 0.6073725135468728, + 0.4158359765866645, + 0.5608939237494288, + 0.41297251205661245, + 0.457716684938946, + 0.44421599334184014, + 0.4450741334997806, + 0.47347856920582826, + 0.5455143493685912, + 0.429037541460792, + 0.6068859893229335, + 0.4359298572080063, + 0.6144000570883643, + 0.47873253019047135, + 0.5500645460316145, + 0.6013322059881417, + 0.5990547437726306, + 0.6271294130973886, + 0.6056731256519923, + 0.513307023308659, + 0.4819813582388078, + 0.4775323861589369, + 0.5447048219302508, + 0.4848315893509241, + 0.6376053364652015, + 0.4764836989052056, + 0.4741996771228081, + 0.44019064330167273, + 0.48760610317428876, + 0.45955301580769303, + 0.5182784119525621, + 0.5364320157986044, + 0.4956519269873865, + 0.6539885526372, + 0.567198514168222, + 0.6307723269976804, + 0.4898974807390413, + 0.46506496882546855, + 0.46149039658697677, + 0.40920495046529654, + 0.6588284891555258, + 0.5544356601399891, + 0.5236408562560325, + 0.646250675486232, + 0.4051581135567612, + 0.5457924237880079, + 0.4024738485148646, + 0.5426822026758343, + 0.40228207128487814, + 0.4656389714495799, + 0.5668420475100542, + 0.5961615994615863, + 0.6053464687929706, + 0.5723689902605406, + 0.5000325077043523, + 0.5896601359967215, + 0.5909438731026624, + 0.43948765733235634, + 0.6399666538989331, + 0.4828202690451645, + 0.645407770916594, + 0.427897987982255, + 0.4352769803109064, + 0.56462607959784, + 0.49733075419021155, + 0.40312196962287766, + 0.5498606812113684, + 0.5469610018491142, + 0.5367432198425539, + 0.4332182607043163, + 0.4446447696610409, + 0.4551877845871206, + 0.5721663208843233, + 0.6336549365797642, + 0.6121960818792974, + 0.4868052716310646, + 0.4360809919207097, + 0.6052223684600854, + 0.566360909701438, + 0.48405593041236566, + 0.6028466173265246, + 0.41162647374094474, + 0.48078097325795793, + 0.5049607823199299, + 0.4483660233804919, + 0.4541665596277253, + 0.571752615417818, + 0.605483624769811, + 0.41535724950844577, + 0.5407634370202269, + 0.5257620847484973, + 0.6471083449201885, + 0.5077125278042915, + 0.4633592887993617, + 0.461068709953705, + 0.5243746641517235, + 0.6514109652246516, + 0.5505035766292172, + 0.5281615593531124, + 0.46378780152614746, + 0.44655153057339314, + 0.4981157493885614, + 0.6403869198123393, + 0.46416435023925984, + 0.410621250375388, + 0.6440451758912564, + 0.6282840727474069, + 0.6347530332932844, + 0.582830547620744, + 0.6489418199143658, + 0.4973296167979319, + 0.49048496892144766, + 0.4306570560148095, + 0.6398821990471807, + 0.5629683003972841, + 0.42552092178093387, + 0.40545322177018633, + 0.5636972405769208, + 0.6029332695308818, + 0.5882158283415386, + 0.5465642799205186, + 0.4638407243522922, + 0.572890834914369, + 0.4707383489376118, + 0.5747303588983329, + 0.643546671732264, + 0.5903462615958668, + 0.436358599799576, + 0.4693469021071932, + 0.6178975297283477, + 0.6068496470103117, + 0.5834306179358026, + 0.6155750357358664, + 0.5324840583572401, + 0.6358718477565177, + 0.5471357835581592, + 0.6480611879769194, + 0.572867590015565, + 0.600600596868158, + 0.4150925027891145, + 0.44076440206020284, + 0.6274333847312059, + 0.49672439609344043, + 0.6429017763711815, + 0.4049279136192041, + 0.6596460415195489, + 0.5793678653887642, + 0.6325341188479074, + 0.4832637697989492, + 0.4664450556565028, + 0.6056978138138153, + 0.5842828600956785, + 0.5033215825489696, + 0.5728760260565409, + 0.5174085634212143, + 0.5717790009661744, + 0.5639821425988465, + 0.4631276735011309, + 0.5632258048655526, + 0.6300517284955696, + 0.6358072544352944, + 0.505106273530319, + 0.5820599124747323, + 0.648101303446179, + 0.5838445734938056, + 0.6501104381594727, + 0.462144345917158, + 0.546579964945766, + 0.5787796293271681, + 0.5156040161383555, + 0.6273137200827746, + 0.5364459723876931, + 0.5464404490151411, + 0.530890124654465, + 0.6556483419300109, + 0.4689274138685841, + 0.46429721476669683, + 0.6371649336265313, + 0.6450222922935737, + 0.43964382675054814, + 0.6487687031878133, + 0.6189192672318741, + 0.4096633489975282, + 0.5050370419712974, + 0.4081010340506279, + 0.5124509023177971, + 0.46788012219326275, + 0.6010890411380999, + 0.4240310244606508, + 0.4879322210638348, + 0.5843606918417728, + 0.45392053992759496, + 0.47379418142028074, + 0.473930866278485, + 0.4458531712340127, + 0.49672382859818376, + 0.5424216337020509, + 0.4974691368689337, + 0.5320183745219033, + 0.5035635521897172, + 0.5305504964966994, + 0.5205870267262976, + 0.4629001781834452, + 0.46151312723593113, + 0.5831584535890524, + 0.6122389576862773, + 0.49618280238443346, + 0.6012055739750187, + 0.650446402652845, + 0.5263733935257224, + 0.6287156115017546, + 0.6429463474690869, + 0.5463605893110719, + 0.6410339880298933, + 0.5307380342766035, + 0.4687987212366419, + 0.5629450422877249, + 0.40380515474076123, + 0.5971169479170553, + 0.4506306639827594, + 0.4979448813981393, + 0.614346078392501, + 0.5332968021740876, + 0.6223742994920685, + 0.5090439102344612, + 0.5892310655690502, + 0.6580886911994808, + 0.5040439665338506, + 0.6156619477270301, + 0.5298023325187776, + 0.5937285237220136, + 0.5643812727900703, + 0.5822845795073602, + 0.6463556450597989, + 0.4301606519800736, + 0.5374671961683926, + 0.4927016412776436, + 0.5103326191146963, + 0.6427318562946907, + 0.6442471761035989, + 0.6348762792386162, + 0.5318136717315854, + 0.40266029625390487, + 0.5627279108295205, + 0.6305010092106391, + 0.5164740250707055, + 0.4858012052328648, + 0.4084430771509089, + 0.5962446349474523, + 0.4639308681127595, + 0.5736249419775283, + 0.5974706097814659, + 0.530656365703156, + 0.6351665947871005, + 0.45104169985017356, + 0.5085952662214055, + 0.5726063975763926, + 0.5061740050331773, + 0.5437015039620299, + 0.4075343036587966, + 0.5021522949595829, + 0.4264603837902778, + 0.5113221135388446, + 0.4964442799598707, + 0.5435597600192459, + 0.5796287172627786, + 0.43961762684838407, + 0.45227809697745525, + 0.4800814485915506, + 0.4234191008617116, + 0.4443805873307077, + 0.5391215095588682, + 0.6350085542838835, + 0.6041870919219567, + 0.5201223312017705, + 0.46609895269230217, + 0.6335633110270268, + 0.5483976564854491, + 0.4568454354116727, + 0.43383416738135483, + 0.4018931001541899, + 0.5656555831998052, + 0.6423546264105209, + 0.6183089196502182, + 0.5908135418060904, + 0.5341000844706856, + 0.593205094964126, + 0.5006255980248459, + 0.647846782972948, + 0.6568325390363818, + 0.5862585894957599, + 0.5449593148432165, + 0.5158422872605388, + 0.4953134581991899, + 0.4259178955363384, + 0.5804039421153552, + 0.556116524499544, + 0.49003561612638585, + 0.4038848941066572, + 0.5768093765667689, + 0.453051338237836, + 0.5803783484218947, + 0.6286809301497045, + 0.4858688724642324, + 0.43686244740523983, + 0.6456085055616426, + 0.5541010747136927, + 0.5491655094375817, + 0.5520836862020924, + 0.44213448358649654, + 0.5533373365950223, + 0.5036162895850591, + 0.4340764697367166, + 0.6143638963668624, + 0.637133959155418, + 0.631825819479559, + 0.5568473822589188, + 0.623332976058615, + 0.6503946136155863, + 0.44781624522359603, + 0.5373662461435986, + 0.6309142269872648, + 0.5543087357829548, + 0.6273438302668779, + 0.4602757527683205, + 0.5335411241976747, + 0.5885223116415561, + 0.4805842906318269, + 0.5422995508927312, + 0.627526947635203, + 0.4112766717888698, + 0.4820787810084398, + 0.4413764026690947, + 0.5069861563149011, + 0.5989168827775804, + 0.4549472453330533, + 0.6380504950280377, + 0.4423532527506609, + 0.4116289455867016, + 0.5027350895797852, + 0.4707723343170763, + 0.6323727170247521, + 0.48276144403965504, + 0.6592076994282596, + 0.4704760563534601, + 0.6389251376409114, + 0.6042995420260848, + 0.49564718821472503, + 0.44571439429150345, + 0.6237234848289868, + 0.655258832738134, + 0.6586296177682585, + 0.44796177701076706, + 0.4032642044349047, + 0.5868666343653569, + 0.40131298663445564, + 0.4430615568163212, + 0.443659413563159, + 0.523610983217624, + 0.45570183752967086, + 0.5544687238468554, + 0.46993259195741277, + 0.5275448487996509, + 0.41325477977737324, + 0.5884396979516803, + 0.5252251218258592, + 0.5150056973781693, + 0.49059553709950243, + 0.4489163377043396, + 0.40233771571850613, + 0.49034691185317847, + 0.5434573825031971, + 0.5635379503717719, + 0.6391102029980231, + 0.5808636362134735, + 0.5534998191078517, + 0.5682145484024066, + 0.6562790178131113, + 0.5825672460962058, + 0.5678683052851997, + 0.5357597805974732, + 0.6059104138546034, + 0.5617194556199133, + 0.5826109542112923, + 0.4580572083264981, + 0.4739612858681359, + 0.610220432406925, + 0.4291298269360288, + 0.5619530574778425, + 0.6263737963697418, + 0.44249393925201014, + 0.6473052230186249, + 0.4503981658626414, + 0.5687774823073413, + 0.4003586648222098, + 0.5133056248198039, + 0.6541532471105029, + 0.6570138326843886, + 0.5937476770879894, + 0.4333851015168719, + 0.48063428882955045, + 0.6583869020439117, + 0.6526649095287794, + 0.4016924636122446, + 0.6056656207264827, + 0.47834090648141214, + 0.6282322391696599, + 0.4724555273889177, + 0.5530461965417485, + 0.4688772539140993, + 0.45631066122917996, + 0.6075128727248614, + 0.44273642489941806, + 0.547608115901881, + 0.516012284217532, + 0.4746460636410013, + 0.5484337782982895, + 0.5576845031773455, + 0.6437876609810369, + 0.5411184036654377, + 0.5450740880699039, + 0.5543458809390877, + 0.6392220305692962, + 0.4922104259303519, + 0.5449190356953227, + 0.4698360828199552, + 0.6235399979917964, + 0.5167701957841768, + 0.45911205307079356, + 0.5019595853364736, + 0.6390297488095305, + 0.6281488069095245, + 0.47526041452312295, + 0.5314210703432511, + 0.47640176438717713, + 0.5962187947902282, + 0.6406547310961059, + 0.4075084403099539, + 0.5010950133073395, + 0.584995163995025, + 0.617538676545889, + 0.41715213611060964, + 0.41567466925182267, + 0.4081195256803564, + 0.415259696052004, + 0.4127561714894642, + 0.41384235717398793, + 0.40618016984354316, + 0.40774957461553596, + 0.40642865725535154, + 0.410909162199514, + 0.4025801810062359, + 0.4049553686815353, + 0.41733325934814397, + 0.40987194906525826, + 0.40316574293414026, + 0.4092789892119147, + 0.41558447514389574, + 0.4097478599295288, + 0.41656296465893694, + 0.40475907535144456, + 0.4054084949011248, + 0.4069318624614578, + 0.41232830318454067, + 0.4132520485410743, + 0.4063803876247479, + 0.4122607404584897, + 0.4108350513643708, + 0.4163473031456735, + 0.4092995473138185, + 0.4104936115604722, + 0.40452306368561847, + 0.4095935473080143, + 0.4040496705273514, + 0.4127648549070418, + 0.41519357777890425, + 0.41000851148010686, + 0.41289521558780184, + 0.40077751511579024, + 0.41317152659178696, + 0.41205817346589435, + 0.4160950932704991, + 0.4014814196845411, + 0.4073466191856013, + 0.405547917191715, + 0.41290887368111856, + 0.41365877627233516, + 0.4158407598301966, + 0.40834655174783213, + 0.6186637565916807, + 0.6658214961787039, + 0.6260463787740848, + 0.46830497966527695, + 0.4733657017986268, + 0.5050458657711117, + 0.6275143892657398, + 0.45664004041263384, + 0.46751900774473343, + 0.668468495892399, + 0.49014308311517885, + 0.49397214714646515, + 0.6023363533340425, + 0.5002192783674755, + 0.5791624629009748, + 0.5448779442918705, + 0.5129878791208068, + 0.6710352802599475, + 0.5735367426530219, + 0.5938652280318285, + 0.6536252079992941, + 0.536927144811494, + 0.6296797403387018, + 0.5018047763971802, + 0.5876697950285332, + 0.6539829342824764, + 0.5820849130477652, + 0.5626204223417804, + 0.5700150584044282, + 0.5166279909405074, + 0.6143590899105231, + 0.5750982296369369, + 0.6280643002383485, + 0.6168004250177805, + 0.6043857232280778, + 0.42751958434879356, + 0.5496690104076866, + 0.4370959908554541, + 0.44423776772653106, + 0.6279665816462515, + 0.6632479083626908, + 0.41844414363785887, + 0.6742851519546087, + 0.5197739294561196, + 0.5615944720474719, + 0.5797524757413925, + 0.442699851170146, + 0.4712140112428712, + 0.6162036196900753, + 0.47482837648456405, + 0.5622439102276048, + 0.42094473232562113, + 0.5788261208529526, + 0.5736105753060249, + 0.5489802624392789, + 0.5186302603841612, + 0.6122209931915774, + 0.495263504285981, + 0.6171953330956156, + 0.6160691882357137, + 0.5688221369111166, + 0.6475695609960295, + 0.6735013486032837, + 0.5934608294238715, + 0.5432862974302196, + 0.639901105525931, + 0.5058420622382138, + 0.5142854244924218, + 0.4485880670461578, + 0.5935863080741683, + 0.6003069124296949, + 0.5344324716645976, + 0.4555084458505755, + 0.4805386905503884, + 0.6628799917510739, + 0.6365522176722308, + 0.47411320904679877, + 0.4918592686373214, + 0.6027577309769714, + 0.4622589938393244, + 0.6511388445365329, + 0.5587991915258127, + 0.49037598264548327, + 0.6418871925947728, + 0.5022241809424575, + 0.5139927553577128, + 0.5659792619121191, + 0.4820597321775048, + 0.5840786972570535, + 0.499499704340124, + 0.6259647625481699, + 0.46800341071635726, + 0.5933749257558866, + 0.5724583278721074, + 0.6453328850568858, + 0.5014878460018638, + 0.6445240163233446, + 0.6560310500454434, + 0.5166733140678633, + 0.6236628132952294, + 0.482700797908143, + 0.6192884747255105, + 0.6676246844938001, + 0.4586887919912696, + 0.44048992373130663, + 0.4354915623588556, + 0.5626206418582683, + 0.4435407241344718, + 0.5451502772227782, + 0.6453932596364187, + 0.6149702350845138, + 0.449404672897951, + 0.6403502159732428, + 0.45387373931965197, + 0.6623411207334008, + 0.4644333097027678, + 0.6595830332579885, + 0.5368755611427354, + 0.4838580589489046, + 0.4184882519846429, + 0.6626038902622227, + 0.4315497765532917, + 0.44641628416424245, + 0.6510464644664149, + 0.4208694000232278, + 0.5525269580368244, + 0.6152964067551826, + 0.6140228632148464, + 0.5334864053652251, + 0.6036437119974788, + 0.5623778518056581, + 0.5710770236231749, + 0.5354446290796452, + 0.6327509191580178, + 0.5180992023805325, + 0.6005450267359768, + 0.47227319823062064, + 0.47556114392094717, + 0.6274801955858987, + 0.4418810320119001, + 0.5968921163234591, + 0.542780890317585, + 0.4857908180747811, + 0.6560917564755215, + 0.6741073206814161, + 0.5856835471089571, + 0.6401820284603188, + 0.5826038706895031, + 0.6037719789982001, + 0.527851590722697, + 0.4719844336857817, + 0.5494374390590825, + 0.5036046514582513, + 0.6091650778865884, + 0.5291011022260989, + 0.4465342108199755, + 0.4743077490427661, + 0.5093669749650672, + 0.6429961360322435, + 0.6061032730503517, + 0.6300792623602193, + 0.4333053990982793, + 0.42541490937476767, + 0.4588636292544824, + 0.6661290223195402, + 0.5602819505876193, + 0.6246733669102296, + 0.6313727161074643, + 0.5527047455254466, + 0.6236652329339458, + 0.5663257044991242, + 0.4178751739938489, + 0.5969002079614806, + 0.4652487956695667, + 0.5562649309103779, + 0.5290674766398449, + 0.5231930658568147, + 0.6493099313797918, + 0.5720159624884077, + 0.5296005021264805, + 0.6410735124095235, + 0.5031685560960558, + 0.6538758564863563, + 0.4963997230936588, + 0.428315562330616, + 0.4396436709997804, + 0.4325237282497374, + 0.42727512917130595, + 0.5663284361208947, + 0.48877671190782257, + 0.663831511086579, + 0.5095610234553268, + 0.5736984619929075, + 0.5044045723203884, + 0.42556490180012396, + 0.5452352666929086, + 0.6703836005132262, + 0.5254596510551122, + 0.44974896965638916, + 0.6127431982856013, + 0.5208441692689937, + 0.5727787041360132, + 0.5882211762462828, + 0.4696649882925092, + 0.6198329090109307, + 0.6598051273374933, + 0.472623981555314, + 0.4256660124347717, + 0.5275252575478494, + 0.5613420428623683, + 0.5177316290023202, + 0.6446208801243914, + 0.4198637965942361, + 0.5011759787151067, + 0.6285192650424437, + 0.6738710721847547, + 0.6565468486059718, + 0.5139447463369823, + 0.5618176013260285, + 0.4870741166379393, + 0.5108544021329618, + 0.4445603060891902, + 0.42246517381869064, + 0.6485527766010981, + 0.5569206798438465, + 0.5147669620850512, + 0.6141770831590854, + 0.5596763597587201, + 0.6530469725268343, + 0.6341700352057138, + 0.5088728758159722, + 0.539188641635253, + 0.6646998861969275, + 0.5900766135395288, + 0.6402922617267738, + 0.5335857780788268, + 0.5257450205935756, + 0.6009861995400703, + 0.43306228076720454, + 0.4724183064109975, + 0.4522001308353273, + 0.452128814717727, + 0.45162240875289655, + 0.6599172601595222, + 0.672781678496674, + 0.4385619074701898, + 0.6295975680444447, + 0.5099783978183313, + 0.6550681783288972, + 0.45731945225931436, + 0.630189788549893, + 0.43553364920351084, + 0.5531566208606844, + 0.4842927174794085, + 0.472214602413611, + 0.5415864665260591, + 0.6057672510520563, + 0.5635305833227353, + 0.6049021091578395, + 0.6076710972941849, + 0.5868005162012435, + 0.6384947433493431, + 0.5261436932977139, + 0.4517692856477109, + 0.6379305145044951, + 0.5617183866265407, + 0.42922629568339765, + 0.5297132974241568, + 0.6199275679891976, + 0.6028624113739511, + 0.6110289096749643, + 0.5683920136223413, + 0.5533598371872335, + 0.42004956252282016, + 0.5055245969859351, + 0.5431013695447988, + 0.51069828275399, + 0.4555634554744861, + 0.5293068586240174, + 0.5295406979880246, + 0.6385710041721991, + 0.5149590132886619, + 0.6735257697925201, + 0.656476631309893, + 0.4941214853351421, + 0.419549268473238, + 0.5605883986246747, + 0.5872130542949496, + 0.46735464818371336, + 0.6575943034671545, + 0.5682247592770637, + 0.5758652521271134, + 0.43316910678293175, + 0.4186578071657144, + 0.4524279823888852, + 0.4377663647822437, + 0.5780068727641376, + 0.5351304543630072, + 0.621482682158919, + 0.501234869076283, + 0.6292862113191577, + 0.4437540507392766, + 0.47538525849489827, + 0.567960404932031, + 0.41924587871126356, + 0.49189135867104045, + 0.48752792156848224, + 0.5406801451402393, + 0.5475501736011475, + 0.6411963679840172, + 0.4921241738796809, + 0.5411806179986013, + 0.5976952218508476, + 0.46961080180107506, + 0.4734623030039098, + 0.6162910775974662, + 0.6515470162865886, + 0.5402820677484286, + 0.6584615304174679, + 0.4496321756018056, + 0.5851470810409601, + 0.5846858053969799, + 0.6162425942344473, + 0.44177445966835804, + 0.6368853228109935, + 0.6345227807364637, + 0.49880598602589843, + 0.46417654792928265, + 0.49365758638629614, + 0.6021404954722136, + 0.545470468274503, + 0.5495305679186745, + 0.5519219494171448, + 0.4749966022943994, + 0.47412492227390846, + 0.672137909903481, + 0.4996233961250569, + 0.5628492969741627, + 0.48910080147096846, + 0.6571813182926496, + 0.5312782705106229, + 0.5693399802668421, + 0.6249813623245736, + 0.5493605187861549, + 0.5583558080947093, + 0.6202289341295663, + 0.6667825927576305, + 0.6404249544153029, + 0.5361597745365673, + 0.6221156468699925, + 0.5422891225837555, + 0.5945602572036308, + 0.5377660460246316, + 0.6642602651412424, + 0.5835855528728072, + 0.6577297891809901, + 0.6235219279555905, + 0.665072143892804, + 0.5092230298993623, + 0.6522569027939403, + 0.48511332345182334, + 0.4522267702181343, + 0.5857470570787461, + 0.5523752745957272, + 0.542372949220619, + 0.4415407608636265, + 0.515764758710309, + 0.566482765145498, + 0.5494312853850423, + 0.44304245740979387, + 0.5527813701265438, + 0.6377326741241712, + 0.4937561586053217, + 0.5456882762315907, + 0.5955968364334099, + 0.5592880490683303, + 0.6012674887013061, + 0.4839009924934923, + 0.6436578612187887, + 0.5859010507817054, + 0.5444764682400671, + 0.4212399820181285, + 0.5402197008871515, + 0.463893492575928, + 0.44282316341458466, + 0.6077839851231553, + 0.44782262342670764, + 0.596033866268329, + 0.47358260417099063, + 0.652165284607904, + 0.4891401544281598, + 0.4884382640289997, + 0.6322824943535681, + 0.5005117496688781, + 0.5116280012235664, + 0.488204485417408, + 0.5122667894293349, + 0.4339758763177964, + 0.6081640074032075, + 0.6092953304464968, + 0.5526203641392282, + 0.45257768677385557, + 0.6047011326200028, + 0.4962005285685325, + 0.49533655945769645, + 0.4347757486911363, + 0.5846586261174054, + 0.45432342800085335, + 0.48001722516523143, + 0.6409704415335606, + 0.4859482622465814, + 0.5450892861913625, + 0.6318245030614065, + 0.5419666770966015, + 0.43176876923911134, + 0.5886099887223875, + 0.6571181551765193, + 0.446505299881494, + 0.6752190145738031, + 0.47101296765141376, + 0.5807612312660688, + 0.43251822804127943, + 0.5283702830885456, + 0.6536622716457052, + 0.5680400172427887, + 0.598904579803651, + 0.49476383730219686, + 0.6393818794750392, + 0.6749314268766788, + 0.55674965301081, + 0.43488071618182783, + 0.6442618573047081, + 0.582665888336034, + 0.5870464549264336, + 0.5989751029886299, + 0.5668745197527779, + 0.6348844881055099, + 0.4187933008921511, + 0.5228149681086238, + 0.4732000913077427, + 0.5250127529265971, + 0.5476985847835315, + 0.6360812304605248, + 0.47956229869254574, + 0.5085972201563821, + 0.5528653680922497, + 0.5378607445847261, + 0.4320476226204505, + 0.49519368533010893, + 0.4317705231683043, + 0.44009562087330056, + 0.4367647485048963, + 0.5000001691813895, + 0.4378796916746941, + 0.4932362206360679, + 0.6684219089464984, + 0.6391066412325059, + 0.6243094785813236, + 0.42729287857248205, + 0.5622567648276499, + 0.4469449138010813, + 0.44255345962592957, + 0.6056175798414283, + 0.5977396269156028, + 0.4472499227985556, + 0.6260232874275055, + 0.6185773026322541, + 0.5476493028014249, + 0.5655955226690892, + 0.6207372844570105, + 0.5806971478739439, + 0.673193734557657, + 0.5358588707320849, + 0.4650918545092592, + 0.45119934728023936, + 0.47407149271119603, + 0.5124633413604796, + 0.6538444798680076, + 0.5469005711931535, + 0.4807725960215937, + 0.5458459733928552, + 0.45312306211539966, + 0.5745984533133206, + 0.6529797697331007, + 0.5041158630541326, + 0.42552223898286873, + 0.49678494144974206, + 0.426303444449098, + 0.5486850889302589, + 0.637643474768241, + 0.5885867418671331, + 0.6604801746120814, + 0.6177578907683516, + 0.43692314979021823, + 0.5634434080804025, + 0.6368424424011969, + 0.4840684240891794, + 0.6034848922318071, + 0.5256969965412744, + 0.4436264038406719, + 0.6543671906542151, + 0.6399719770290165, + 0.5596298722527621, + 0.5388295581184049, + 0.4479736592737353, + 0.5251154991895247, + 0.4212127531099962, + 0.6174296958398777, + 0.6682008831813349, + 0.6061008022956641, + 0.4414591775808399, + 0.5219308249233546, + 0.4397006083913717, + 0.6549175444920357, + 0.4956142518103546, + 0.6731628294936831, + 0.4672512890209819, + 0.646326990423463, + 0.6636012982427719, + 0.4998812175114761, + 0.4851278786141787, + 0.5842500646896425, + 0.4720559343130976, + 0.645523525712766, + 0.4917607904626151, + 0.5011869235208324, + 0.4607192880091755, + 0.6614999679672873, + 0.6012942920203168, + 0.6076271895898512, + 0.6208732040803406, + 0.6154666794152432, + 0.6725475565663033, + 0.46433810079190163, + 0.6097353466706292, + 0.4547631502541668, + 0.47287532413882577, + 0.489312872064836, + 0.5104322848113781, + 0.6499110147950776, + 0.561170926155263, + 0.41832180380981626, + 0.4915424592024694, + 0.4599742414606182, + 0.5717279035126892, + 0.45612667755125313, + 0.6726893972577894, + 0.58385960890337, + 0.6257651076467751, + 0.5359394451946294, + 0.4352347062627171, + 0.6103494956535177, + 0.6005890418349848, + 0.6041906279857178, + 0.5130637982124853, + 0.5176778997749076, + 0.4767805818002884, + 0.47698594573416797, + 0.5589953819581441, + 0.6659235437138485, + 0.6484624784986153, + 0.6325123900795082, + 0.5826376264516105, + 0.6624181030352422, + 0.49022570085521905, + 0.5636995687344764, + 0.5588082333555504, + 0.6413412794538171, + 0.6008055307666268, + 0.6427697128792778, + 0.6641311881230638, + 0.5092291371373243, + 0.566555968235819, + 0.5531158745064284, + 0.5046098807797456, + 0.5520111609104219, + 0.6304417693673972, + 0.505151519058036, + 0.4416020935134145, + 0.646107270868101, + 0.5297204665697003, + 0.4370190418674936, + 0.5672703314233557, + 0.48996856556356455, + 0.6630325622714122, + 0.657373757039599, + 0.580934138353937, + 0.4747809787449257, + 0.4241361644323903, + 0.43640039186373203, + 0.4843622697286114, + 0.4544243854605152, + 0.6577154690447992, + 0.639685305528052, + 0.6587557710526475, + 0.5306128199125757, + 0.6452947644990731, + 0.6357267716749293, + 0.6512078526650209, + 0.6698945814551295, + 0.6299315222741697, + 0.5725488884588212, + 0.5799893302172573, + 0.4693969322126539, + 0.5963519636130984, + 0.45285119809383745, + 0.4877468808898209, + 0.5474766767152183, + 0.4670707518028317, + 0.4272015052992463, + 0.6145498855624159, + 0.5207575117218303, + 0.6612267087410298, + 0.4528896183351633, + 0.5295068831726898, + 0.4941547831637422, + 0.5730361204173189, + 0.6571823337316527, + 0.6759721464718964, + 0.47926080006185734, + 0.5262904413070497, + 0.4642679156983115, + 0.43770142300554365, + 0.520122971212266, + 0.4451343661443298, + 0.42358505874778857, + 0.6146053530176067, + 0.5998849336484793, + 0.4789013654873786, + 0.6704423461945052, + 0.4253071054398781, + 0.6718960897776963, + 0.6382681855275456, + 0.4682248408161684, + 0.43194216987563183, + 0.5138850448557033, + 0.6098098168345143, + 0.5018441748717778, + 0.5319589017828005, + 0.626099558053375, + 0.5646894930749273, + 0.5078125963829955, + 0.6236378601508243, + 0.46906656178847417, + 0.49638092030424763, + 0.641166874718798, + 0.597663350546503, + 0.49918422415926283, + 0.4753699292673029, + 0.5479279915892143, + 0.5467064144451789, + 0.45848594384802216, + 0.5050006174687619, + 0.42278209905959024, + 0.5524511655993667, + 0.6690067711490187, + 0.4601545521144763, + 0.42448772281497676, + 0.4738416354985964, + 0.6019377780091062, + 0.5016601403582513, + 0.649542785483363, + 0.48901226223643623, + 0.5194696101020322, + 0.4449625833158787, + 0.6508870100329195, + 0.4902748908266815, + 0.587377799810794, + 0.5971774628633941, + 0.5513827696042237, + 0.48572390469315674, + 0.6122197396769073, + 0.6030423640464975, + 0.4489806057066333, + 0.5216830998474734, + 0.663559198605107, + 0.5855040429831501, + 0.5751283762463459, + 0.45342637720861595, + 0.5040502483337106, + 0.43940069959398587, + 0.6438617192025182, + 0.449935876787998, + 0.5268066977442892, + 0.43200487315019603, + 0.4308707033078556, + 0.5291570331193189, + 0.5638747385453204, + 0.5303259931884781, + 0.4293667987671472, + 0.4298463634868346, + 0.645908022977257, + 0.4616150551293596, + 0.5295571859601491, + 0.49226411638278744, + 0.4651857187364878, + 0.5175628779023452, + 0.6717375402334267, + 0.6193943324670412, + 0.6543086239643756, + 0.5947291266971952, + 0.567300555216746, + 0.4653847172157376, + 0.5232019071688474, + 0.5401662248804371, + 0.6169356740403316, + 0.558114720551196, + 0.6709036734642972, + 0.46420764460091823, + 0.6269702580676505, + 0.4756628600216278, + 0.43454138924550034, + 0.5511786255077191, + 0.5599807419900495, + 0.6100734279200468, + 0.5705932400591633, + 0.598076806507937, + 0.46683532604330685, + 0.5201893812204563, + 0.6188498402445479, + 0.5322627553912872, + 0.5626770507714963, + 0.5686588638009538, + 0.4283329020393113, + 0.48289886219028033, + 0.6123453418842592, + 0.5727520762190752, + 0.6506406451831679, + 0.4843431393525188, + 0.4712449180492902, + 0.626059096717345, + 0.46444556223131334, + 0.6622674463004574, + 0.5847215223149224, + 0.6635176951730459, + 0.44211645609921313, + 0.5812611715170566, + 0.5935015511030367, + 0.6723581535655567, + 0.5811996592880234, + 0.6051260217592425, + 0.5013212769779508, + 0.5747407297802682, + 0.5893632820482739, + 0.6752715355045844, + 0.5120855602655245, + 0.5959157544678947, + 0.6341078325395165, + 0.4796038143099947, + 0.5143740220338999, + 0.507940479133872, + 0.5504318323413937, + 0.43917226557999356, + 0.5803683053408988, + 0.5839019837110467, + 0.6391547741754122, + 0.4213278721014795, + 0.6506167167419604, + 0.48057559087130786, + 0.4589982186304581, + 0.6063292558841016, + 0.46640835557887117, + 0.5997102794048879, + 0.6429561835775335, + 0.43635024335349, + 0.5202947109776997, + 0.6204482975901258, + 0.6272470148031342, + 0.6114382885648084, + 0.600214836618274, + 0.6260491240216263, + 0.5471449747602166, + 0.483435053612012, + 0.44098449179463284, + 0.5276655305445258, + 0.5027416850512085, + 0.6663330275757455, + 0.4689910311457727, + 0.43343829316455373, + 0.4654772277516001, + 0.4878292390119595, + 0.45771757712107497, + 0.44113241935386116, + 0.5361759297183487, + 0.4320449592678545, + 0.5185808321255505, + 0.5222659290792272, + 0.5979957653932836, + 0.6458864276831328, + 0.4444388475657291, + 0.5087232837854605, + 0.5777054162275688, + 0.5110753800421013, + 0.6563102804975645, + 0.5641161982274984, + 0.633148875245892, + 0.5776176663314918, + 0.5295769898879016, + 0.4937347110090873, + 0.6042891160011343, + 0.6206414575978353, + 0.6576942811166779, + 0.4696725811815, + 0.6589932083091092, + 0.5678525912299092, + 0.5908502688898118, + 0.5441275604322948, + 0.66653167217061, + 0.4677679104890484, + 0.5688595138764243, + 0.5060107386556006, + 0.5827265194248104, + 0.596126572206028, + 0.49818523914105234, + 0.4982341029334998, + 0.46430523926438866, + 0.6252246423612321, + 0.5602278955723731, + 0.6597785186051324, + 0.4949156511442636, + 0.4305445277092178, + 0.500536246153343, + 0.6529708383963886, + 0.6756708562290121, + 0.4635134568913601, + 0.42066686158790184, + 0.5481191799165859, + 0.5138203526161884, + 0.6394441666449984, + 0.5156125741315041, + 0.5042526992528915, + 0.5957743411428282, + 0.4857537584581223, + 0.5254770345633826, + 0.44480495886484406, + 0.5055859987820908, + 0.5564093056666319, + 0.6287957573697326, + 0.6639847815837505, + 0.6099976449982817, + 0.6099981726560155, + 0.6438447337211566, + 0.561913586624349, + 0.6368837061016767, + 0.5705895168845608, + 0.5989722248021062, + 0.5747121354813229, + 0.43858993046493844, + 0.5386441562330112, + 0.6592513198093767, + 0.5168602688217628, + 0.5523727081674877, + 0.6091762315661171, + 0.5543408100669136, + 0.4298296188141463, + 0.6336872423796126, + 0.6501279412541047, + 0.5413340501468423, + 0.6343202858020961, + 0.63971845201489, + 0.5176003925160564, + 0.6325645960516729, + 0.5579512672466466, + 0.6142445566646662, + 0.5542726194218361, + 0.4674306218329813, + 0.6451304398424416, + 0.501423913297982, + 0.49547478051090366, + 0.44091315058639885, + 0.67612785107939, + 0.5077084071042915, + 0.567738744947256, + 0.6111882513597162, + 0.6567208198918738, + 0.6184597705078414, + 0.6633494014071144, + 0.6725262897471082, + 0.4807870033468508, + 0.5155401155300986, + 0.5991896241108634, + 0.6476244020177709, + 0.4256282159591093, + 0.6302100635701158, + 0.5699585996967419, + 0.5900002820518522, + 0.49000321695818627, + 0.48916164227894454, + 0.46842429149657877, + 0.5995220770368569, + 0.602844282212248, + 0.48714890738021754, + 0.5754771529036167, + 0.6251402661099685, + 0.6689397909509013, + 0.5392346957926715, + 0.615668358446007, + 0.5253080903775751, + 0.5466375532210562, + 0.44498427418670766, + 0.46508050056951616, + 0.607723127995853, + 0.449109380818582, + 0.4788019591261244, + 0.6390101623691643, + 0.45200313737958575, + 0.5530739672108212, + 0.4233524877990753, + 0.6438637604465965, + 0.5955448332479023, + 0.5423833858900065, + 0.44908558766074885, + 0.5311714392075653, + 0.4514007158486212, + 0.6161292686085192, + 0.516762799139641, + 0.618128536201714, + 0.4997598016993501, + 0.6695433575507317, + 0.5436005416044496, + 0.43568294373019295, + 0.5483429320551184, + 0.5678179852304454, + 0.6277294216356517, + 0.5323047200927394, + 0.5672290394513544, + 0.495106569181642, + 0.6182580077526791, + 0.5337376429104425, + 0.5741367286715391, + 0.5864315044872417, + 0.5160573425288094, + 0.6672788744843194, + 0.5430932223280925, + 0.6649310429458581, + 0.6606263725376855, + 0.5516723950423116, + 0.626969289302088, + 0.448945587646302, + 0.4949997170632518, + 0.48745044763444445, + 0.5674079061141981, + 0.4310005816419374, + 0.5998221782980577, + 0.6720817907123855, + 0.4970373612487736, + 0.616848700692135, + 0.4514854689646, + 0.5788225559910173, + 0.5139259475517826, + 0.6069316801187977, + 0.4930694536410664, + 0.4509350272929651, + 0.6391390039946321, + 0.4706105426320323, + 0.4308072238238336, + 0.5494920002707673, + 0.550567172842012, + 0.5064704670889415, + 0.6687571253126972, + 0.4252875630506553, + 0.6648981418164633, + 0.6373179226697653, + 0.5755645426075042, + 0.5247611099500463, + 0.6480683932228865, + 0.5268797989310661, + 0.4287631624932705, + 0.5019482346960547, + 0.5312391026363799, + 0.5419663958200224, + 0.6377767553920065, + 0.5077554055106928, + 0.6040129593482538, + 0.47296573480972454, + 0.6754773839739765, + 0.580106658745535, + 0.4276432373138483, + 0.629560946774607, + 0.5368240031999153, + 0.5514116121831939, + 0.6510125635438458, + 0.6105705106961907, + 0.6480246405311586, + 0.5975590024089117, + 0.6059101092482692, + 0.5873472905784402, + 0.5670098928174474, + 0.5475157506157041, + 0.6185801872363037, + 0.5501714090764107, + 0.6407974413387563, + 0.4650948836049771, + 0.6119148034359145, + 0.42366437900199483, + 0.5525950519190994, + 0.6125160701088854, + 0.6609902172068608, + 0.6014862887238526, + 0.6746754636933474, + 0.4982927573695073, + 0.6389145736710107, + 0.4728955896767261, + 0.6493583479083107, + 0.47402618932098906, + 0.4439964341983015, + 0.6027631461067285, + 0.44843274483855533, + 0.4486753320928862, + 0.5262284168538645, + 0.5700084071382785, + 0.5705814967531783, + 0.515570259499563, + 0.5614124187578313, + 0.45250900085078616, + 0.4656748718121697, + 0.5550184158341261, + 0.48313510299537754, + 0.49371946062905847, + 0.6716292560349615, + 0.6386527839314069, + 0.6317751141927562, + 0.5593568639707345, + 0.604976983931754, + 0.41808122767006123, + 0.5365149841640768, + 0.6020721513697708, + 0.5301725588857653, + 0.6102383370200692, + 0.6248363757608615, + 0.4383824749044205, + 0.5078260638993375, + 0.6164107201137121, + 0.4430416181109835, + 0.5583082238663108, + 0.5346398029475393, + 0.6625426320715848, + 0.5729009325908674, + 0.6548431380712706, + 0.4489218459317534, + 0.569764708215242, + 0.6597510313061401, + 0.46269701301258287, + 0.5656926994116224, + 0.43632007151012314, + 0.6533844400382396, + 0.6572008113168453, + 0.4486128613214948, + 0.515716407098676, + 0.4794804108422735, + 0.5663416789039835, + 0.6138596257352869, + 0.4702287761597685, + 0.4571967914763247, + 0.49095160644725, + 0.5117154260071345, + 0.631816959103217, + 0.5297002822560725, + 0.6221920615364369, + 0.501653658635791, + 0.5476545460108793, + 0.45086069858294153, + 0.44213149156256065, + 0.47047683663655515, + 0.6251854682941729, + 0.5685300420062118, + 0.6483900096425302, + 0.5552833497859515, + 0.4820711053819329, + 0.5880924880902882, + 0.4913115478013045, + 0.5202291118894559, + 0.5173481550539121, + 0.5611645662812318, + 0.5435917290998352, + 0.5458227121365733, + 0.4711399149027056, + 0.47884164541117086, + 0.586758335641432, + 0.4276342185976828, + 0.5441748774094058, + 0.5812586367884944, + 0.6057537700554095, + 0.49061455870483117, + 0.6455704010294107, + 0.6141948239194893, + 0.5369104526484658, + 0.4306212621219995, + 0.6604976064623688, + 0.5588487266425906, + 0.630993005593718, + 0.49201692108324324, + 0.6462217600086144, + 0.48689176022503855, + 0.5970820119993103, + 0.48673969282814594, + 0.48880392917379756, + 0.5196910522942285, + 0.6516639609672149, + 0.48413987382701185, + 0.6162746196919014, + 0.6686144037524479, + 0.5480007766850874, + 0.4616610649899745, + 0.4870627070781328, + 0.6330708253676587, + 0.47716768102227114, + 0.49504668446680694, + 0.643512659066177, + 0.609659169898014, + 0.6027256639770283, + 0.5749312701681735, + 0.6066567695612832, + 0.5936583754386671, + 0.4612976565162898, + 0.6726102374755618, + 0.4965430955190422, + 0.5957261523227756, + 0.5715683263041845, + 0.5897208275802562, + 0.5175287184294949, + 0.5086578401357429, + 0.5706975033123912, + 0.44737520347554444, + 0.46885113054247607, + 0.6312261001288324, + 0.5416869420350455, + 0.6246389069078677, + 0.5017781181884734, + 0.5156538494707956, + 0.5079534323796221, + 0.4403593478920036, + 0.6108580290577519, + 0.615883224225863, + 0.4728743671303, + 0.6549814034207883, + 0.6266212705713861, + 0.5025900197166882, + 0.4272047047369499, + 0.4939331488412162, + 0.5126655597010561, + 0.4581394385335203, + 0.4712228759503606, + 0.4237628663455971, + 0.6238586428429682, + 0.5850495394063926, + 0.5994577631872001, + 0.42717701249832296, + 0.6194655019677118, + 0.5225908557785321, + 0.6286505444230719, + 0.4201119373573504, + 0.5679516064796498, + 0.5903580652886612, + 0.6328799341536309, + 0.5053324459281825, + 0.6072195175128706, + 0.5946366516321991, + 0.48898499353442254, + 0.434580817004348, + 0.602723676797946, + 0.5329873530540066, + 0.48394845278596826, + 0.6372518819339373, + 0.48138445119609974, + 0.6517876095116626, + 0.6673339561064187, + 0.5347577598714708, + 0.4502870581743756, + 0.5439691117597175, + 0.4201118470775914, + 0.45429788401098575, + 0.5347747947678881, + 0.4634870986947889, + 0.5769956626962063, + 0.4296478670853194, + 0.5492912112054913, + 0.4727787774232313, + 0.6029351478565788, + 0.554063240153242, + 0.5647456726155315, + 0.4762428005415566, + 0.41922343208047086, + 0.6107370910173773, + 0.4588336943477205, + 0.5421538207586063, + 0.670069399628596, + 0.611867753846928, + 0.557213413688316, + 0.5063310019584979, + 0.5924880669308283, + 0.4794026074780565, + 0.6394034958681301, + 0.44022545751000364, + 0.6751687160703161, + 0.6644763769804207, + 0.4491439488403998, + 0.6055226058273186, + 0.45902314663746296, + 0.4985624699840063, + 0.5280519113552421, + 0.42513053894611313, + 0.5705044185085255, + 0.5938687034106451, + 0.4824991546437328, + 0.5201799761038169, + 0.6378588687280747, + 0.4221606927871152, + 0.4426130573038244, + 0.6265601276369537, + 0.5877299787556127, + 0.5876811407884568, + 0.6178419383180506, + 0.45505950695307357, + 0.5135016086596155, + 0.5860410079378181, + 0.49451622070518975, + 0.599025123440801, + 0.5577075768704607, + 0.4235901214232942, + 0.4951345858133218, + 0.5975954685282594, + 0.538515284764658, + 0.42207200649661986, + 0.672007301793079, + 0.46459142130737446, + 0.5761051031460621, + 0.43100582390339415, + 0.6239677585330582, + 0.4838616049466472, + 0.45470247486526627, + 0.4673929705819646, + 0.42463174775499757, + 0.5134102641931542, + 0.4880475796424375, + 0.5484534910974355, + 0.45524406544770024, + 0.5656469318259032, + 0.5918452711383174, + 0.6616984822703174, + 0.4388208919060523, + 0.513575244078001, + 0.549104537669757, + 0.4904813069147809, + 0.4277674890452796, + 0.49847767225768264, + 0.572813493639029, + 0.59109859747183, + 0.6135812975385405, + 0.5686482989269631, + 0.6714894211847762, + 0.5816139500621464, + 0.49136479392844695, + 0.6602524063941119, + 0.5084934337410273, + 0.5359078714149633, + 0.5748360205283813, + 0.5014726077765187, + 0.6334426206713405, + 0.5089059306534947, + 0.4792825460476288, + 0.515784409238169, + 0.6022318674679527, + 0.42724499553077994, + 0.60556909805696, + 0.5809755709704891, + 0.45246072460737075, + 0.6051551604686015, + 0.5168916549232311, + 0.6760061762579224, + 0.576429765741346, + 0.6139918930841151, + 0.5187206496881277, + 0.5513428921832595, + 0.5084298951867354, + 0.4297257065404693, + 0.6130519374512127, + 0.6098091763262727, + 0.47414114363953797, + 0.6229945297166168, + 0.47417948866952614, + 0.6237150528616181, + 0.6223083053284715, + 0.6650114575809266, + 0.548640058003776, + 0.6600423102842694, + 0.672198427944197, + 0.5909426419950528, + 0.6506507118732174, + 0.5798091064371749, + 0.5266205827892922, + 0.44346537097035843, + 0.55073138737864, + 0.5663650864893949, + 0.6671966639951631, + 0.6317367962406127, + 0.5942590917199208, + 0.4672236499771694, + 0.4793590070351424, + 0.6089107777747036, + 0.4666576992209707, + 0.6256273713086642, + 0.6699167780695945, + 0.6552340585993263, + 0.43420120803784673, + 0.5272864267508344, + 0.42120309383726934, + 0.6555820492245131, + 0.5155067906336123, + 0.43079578700320353, + 0.49885044363427977, + 0.631648282724498, + 0.55258150657046, + 0.5073527930688516, + 0.4617488266998429, + 0.42337274600729946, + 0.6215094591134338, + 0.519397941870058, + 0.5369302144633952, + 0.4328633136584435, + 0.5757012744713902, + 0.4849266211124019, + 0.5368090046712135, + 0.5066541127347344, + 0.5841786384589298, + 0.5038701489143311, + 0.5105035106709749, + 0.5691524171778579, + 0.6141488421026757, + 0.4483880311334529, + 0.6464554423764665, + 0.6184727307344038, + 0.6460829419789078, + 0.6622115093063914, + 0.5197896932740175, + 0.5262045797863589, + 0.6402678421929364, + 0.5420368929700314, + 0.4996859833131402, + 0.6156296226422884, + 0.5149507558072215, + 0.6195032941167082, + 0.6182827282906899, + 0.6739823169536806, + 0.4562154792085572, + 0.5957536739325099, + 0.4327704453335564, + 0.4312980106895355, + 0.609340848826688, + 0.46518656238267025, + 0.5224420472742266, + 0.5258092664663971, + 0.6020292475143797, + 0.4680710796690936, + 0.6566345868389716, + 0.43763611932226576, + 0.6008516535644058, + 0.4573800572416806, + 0.519033718345491, + 0.4766454652626074, + 0.597644549991845, + 0.597968585162079, + 0.4491471274615502, + 0.5836855113804296, + 0.48881272595212405, + 0.43063826160998586, + 0.4711069704214128, + 0.491332486145751, + 0.6369660614619388, + 0.5247410053787961, + 0.6533945892609101, + 0.47952817401879105, + 0.4571086970548646, + 0.486927033200762, + 0.4469335928661234, + 0.5787981910215672, + 0.586077371820191, + 0.6443496104666973, + 0.4713076440819153, + 0.47332034371590864, + 0.4380614232349029, + 0.4880018504127424, + 0.6456544826523392, + 0.6269720688939131, + 0.4382861016834727, + 0.5850182825206348, + 0.6209766187378735, + 0.5946714924777973, + 0.644328071860983, + 0.6610367510719928, + 0.4453795311062353, + 0.506818278789746, + 0.5997030359769215, + 0.564300502660684, + 0.5915721509900786, + 0.4870436620729171, + 0.4821373628175896, + 0.5283433340384645, + 0.5186381515589504, + 0.5411683461896506, + 0.45780868203224545, + 0.6707356165287726, + 0.5514131676544831, + 0.5338969947497376, + 0.6513389132729768, + 0.44886342660887574, + 0.4986069006395344, + 0.643524193391204, + 0.5482614639820292, + 0.5756349226820744, + 0.46419191202631555, + 0.5117635432788035, + 0.4414247294125777, + 0.6117387532332201, + 0.6297260912501168, + 0.5233042723443851, + 0.5202261967588463, + 0.5545507193700767, + 0.6611151446627456, + 0.4398696818906977, + 0.473054299737586, + 0.45495764883528883, + 0.5509555358889967, + 0.6514283169158246, + 0.5019715302926671, + 0.4519500330301265, + 0.498365415875194, + 0.4723799924910431, + 0.48754076126414087, + 0.5892977675382051, + 0.4414655846151482, + 0.4469935248052333, + 0.4414677157415759, + 0.6004109438822295, + 0.47322420777927954, + 0.4721474432607007, + 0.5106033199884509, + 0.6277671723480984, + 0.4969410082802199, + 0.653861291337887, + 0.5117172747653163, + 0.544367392495219, + 0.5175244116240957, + 0.5227026176680079, + 0.5146952310974495, + 0.4381112226620481, + 0.6163245885767891, + 0.6599614867396939, + 0.5674314015139748, + 0.573181595547409, + 0.6237148054786532, + 0.46795814073644787, + 0.47218465804269766, + 0.4524022244742728, + 0.5643623692908885, + 0.6538578926384873, + 0.5885855783295441, + 0.46807262222115104, + 0.5516725299109979, + 0.47082875329682355, + 0.644147791070851, + 0.43253680037091746, + 0.6186731931926011, + 0.45564298619777593, + 0.5007109816953412, + 0.639801390375888, + 0.44586269947433255, + 0.6397149530552425, + 0.6275433524996125, + 0.46030847337352715, + 0.4272007563626595, + 0.6586900983096114, + 0.4189031498205622, + 0.450794073459694, + 0.5214007015753314, + 0.42101627511549716, + 0.5938036049486581, + 0.6419773101210333, + 0.47939586266064355, + 0.5652778045758694, + 0.4338922307347185, + 0.662609141818618, + 0.5893522963052936, + 0.4183850293936286, + 0.5273898400321877, + 0.5871311389322329, + 0.6376943125711301, + 0.5804626355512543, + 0.6473223178406453, + 0.49273761870183763, + 0.6046834813584172, + 0.6072349854067787, + 0.5669968824371872, + 0.6016409669331728, + 0.6050393688315338, + 0.5704057425450002, + 0.48586232366978915, + 0.5405720528283163, + 0.47091001779276537, + 0.6173315607429576, + 0.41879679382950674, + 0.5565904809811377, + 0.47414384948138516, + 0.568346519991162, + 0.5541683403655372, + 0.5456371540794682, + 0.6657251685943771, + 0.5825857628007115, + 0.4734678165485151, + 0.47611247545932844, + 0.4338513371809838, + 0.672280883804744, + 0.4229627550219375, + 0.4497412349460643, + 0.6292509641246214, + 0.4206841158246909, + 0.4514802539239091, + 0.4390625080509076, + 0.62904447233078, + 0.5976771290346261, + 0.42174286239809494, + 0.537489846528018, + 0.47544052248659757, + 0.5631827359310672, + 0.4548830981327004, + 0.6756923955254392, + 0.5870911544323338, + 0.6500696989693584, + 0.4426434616118874, + 0.6509466282106549, + 0.5962525078274883, + 0.6648378677598582, + 0.5226021646437627, + 0.541797846462833, + 0.510861179395654, + 0.6630892586629401, + 0.5367778558990198, + 0.5375768772654325, + 0.4566236085213001, + 0.62594970257563, + 0.48810323298572755, + 0.4337475396312565, + 0.4258183924319848, + 0.5711234003045061, + 0.5168507878228732, + 0.6430349710165784, + 0.5386550746552407, + 0.46106714128987253, + 0.6279738668879626, + 0.49594190055541754, + 0.4901276161420879, + 0.6719272880777879, + 0.634314643710829, + 0.550076331304068, + 0.45565444659799964, + 0.43560187014279245, + 0.4648728722831941, + 0.5945951613811963, + 0.6062374589486895, + 0.46209884131010653, + 0.43816330048622176, + 0.6675080348893347, + 0.6295788552972336, + 0.6341767957658666, + 0.42974435010830875, + 0.47095117769120226, + 0.6203088114472908, + 0.6750487372473492, + 0.4713897009721311, + 0.5881730950610079, + 0.6259879275270464, + 0.4286429309659223, + 0.6648996324955361, + 0.4841220782054608, + 0.6682441264277641, + 0.5804390215688197, + 0.6360974761083393, + 0.48556084308642034, + 0.5274661530410496, + 0.47577169932604046, + 0.5329123778501766, + 0.5702533042291292, + 0.5562024698575198, + 0.49422496902961804, + 0.510112913807003, + 0.559641345976785, + 0.5363010400612845, + 0.5214989091228562, + 0.6432684065341269, + 0.6159410142334454, + 0.43849777697617753, + 0.629372817368506, + 0.47045728052342417, + 0.6382908689457731, + 0.6722081523435732, + 0.5479407689400406, + 0.6710205365929127, + 0.6377263045318525, + 0.6433020569017958, + 0.541623355088046, + 0.5172351930813528, + 0.4947934892329621, + 0.6013528552236516, + 0.6034948577806821, + 0.4279938822955963, + 0.6712777581592362, + 0.4345456486875733, + 0.5582745892783212, + 0.5164646525285719, + 0.4779787035213325, + 0.513443097918909, + 0.6427237715897787, + 0.5679735270299557, + 0.6102716763838884, + 0.5475826855736516, + 0.4263061003005549, + 0.45351257414412444, + 0.668952008266098, + 0.5062423570699076, + 0.42035880114296864, + 0.49042951586698047, + 0.46044116290109705, + 0.45037535092477315, + 0.5502148944023486, + 0.5251715573389579, + 0.6544952918240217, + 0.6377621368251094, + 0.47214832054760714, + 0.5851481290079082, + 0.5316710882020335, + 0.6094803489761836, + 0.4429843922719223, + 0.6102537834190163, + 0.5855085956630669, + 0.507512696184161, + 0.5108189826721767, + 0.4655045625250388, + 0.498604110135793, + 0.4623549733539597, + 0.6650933404971426, + 0.435716192655376, + 0.5608385808241656, + 0.5162429273436229, + 0.556672147449047, + 0.5399772499751657, + 0.5963641437123793, + 0.43957602306982346, + 0.6265208383409813, + 0.47407143313636774, + 0.5037537539316709, + 0.587318974049634, + 0.5246625811171158, + 0.6402333119696109, + 0.5187418539781387, + 0.5214806403898993, + 0.6625907176493491, + 0.5459300675887133, + 0.6418755782495633, + 0.5151437244364354, + 0.6232436560287475 + ], + "y": [ + -0.4432159655895651, + -0.5823871036951657, + -0.6321558040686575, + -0.6281293501807178, + -0.846375860256131, + -0.8087969783143467, + -0.82837213610394, + -0.7127313204853822, + -0.7188568048007147, + -0.44121826420015864, + -0.8489126200349311, + -0.7964617103126466, + -0.7632732017837138, + -0.537337123470387, + -0.84890069925948, + -0.5582211322645969, + -0.7367767552546433, + -0.6553224530197546, + -0.6983201899485597, + -0.7852659821986434, + -0.4676593717796288, + -0.7642026512174694, + -0.4595929894290875, + -0.7881300952004628, + -0.4074211518904701, + -0.7280019164156561, + -0.6790101071514786, + -0.6345124678609813, + -0.6487065646910061, + -0.4525976955267307, + -0.5754841629871728, + -0.516731468433036, + -0.8061159100733846, + -0.4107679840329321, + -0.8628321521529942, + -0.5571949092893782, + -0.5294156993034891, + -0.8057103471896616, + -0.8017401872828076, + -0.40921963915232085, + -0.6056740383747836, + -0.4521559914292026, + -0.7765096125420216, + -0.6031634504240942, + -0.7644423296741776, + -0.6355776155519656, + -0.7799716700671221, + -0.7952876133137988, + -0.8500986224894057, + -0.8142438400479478, + -0.5992219167735197, + -0.5644224710958516, + -0.48500039451516025, + -0.7577766997680461, + -0.5374542065252799, + -0.4046769062436991, + -0.5376207942014544, + -0.45189318019292846, + -0.5720724754792128, + -0.5140316788295471, + -0.568704206674379, + -0.43450814043083646, + -0.7034979307984688, + -0.7562803564959105, + -0.6815828644029427, + -0.7858775569101486, + -0.7429007724079684, + -0.798616047926944, + -0.6997606247085718, + -0.5811340980431859, + -0.7850860456369989, + -0.6097339816632485, + -0.7938393829556933, + -0.7206736137505965, + -0.6970551273246782, + -0.44710610981307625, + -0.814277704044462, + -0.5471126889163793, + -0.7964125866828744, + -0.6499119021077876, + -0.753988464202047, + -0.6102745534463474, + -0.6940825532322431, + -0.8287371445831021, + -0.7898146449910275, + -0.46734617505541903, + -0.8037819012637124, + -0.6186121250392125, + -0.44610809739264284, + -0.5005878525766311, + -0.8071363928152594, + -0.5503210987116924, + -0.8273874603059147, + -0.5855684802941814, + -0.6632250375716351, + -0.8547807028020109, + -0.7633194641727156, + -0.7855495369746052, + -0.4999995889994189, + -0.5720554719584929, + -0.7847393262637536, + -0.7857404954044234, + -0.8257440296557027, + -0.4757388815789973, + -0.7309644986145094, + -0.4505749309548344, + -0.7177053768941176, + -0.6945142124344441, + -0.7834744297753948, + -0.6428166067463894, + -0.808597171522588, + -0.5364172772543017, + -0.7353676270269176, + -0.5498894260552238, + -0.4794731052318494, + -0.6066552806657859, + -0.863847259353731, + -0.4689042644415654, + -0.5664333731845723, + -0.4155313324924204, + -0.49799529673699205, + -0.48107689088010125, + -0.4572148177709923, + -0.5683312772041946, + -0.6754619616809117, + -0.44095727891524383, + -0.5581372979057757, + -0.5148272659765123, + -0.8193039844658101, + -0.4059736870690929, + -0.747174810302052, + -0.6572300332552972, + -0.5831017186495411, + -0.7450587770906386, + -0.597560224693536, + -0.7720887844309521, + -0.6362149819401441, + -0.6946848323821884, + -0.5887611669377139, + -0.6812109093326907, + -0.863509293833139, + -0.7858372667530297, + -0.8649510336993825, + -0.8445141893332779, + -0.4413218274266901, + -0.5969452117937186, + -0.8177172645407418, + -0.4827485097178296, + -0.8638330324427624, + -0.42511783151292093, + -0.4966312074103702, + -0.8524892654749893, + -0.4132746534647103, + -0.564597940038267, + -0.5601095423058091, + -0.40502439846190214, + -0.6349707007214682, + -0.42455466761376526, + -0.700603182425749, + -0.8506166705227856, + -0.4810250741698295, + -0.6523484417886688, + -0.7557329672801689, + -0.6807370390160616, + -0.5878278175300156, + -0.5245248148797728, + -0.5178884939809951, + -0.5599322330137027, + -0.4181905743591252, + -0.7793806186808037, + -0.5303801530214607, + -0.8183483442650257, + -0.5588334231380349, + -0.638515564873561, + -0.8602831167715659, + -0.4054912106198001, + -0.707518044160148, + -0.5299310217311881, + -0.5339279732143564, + -0.7661795292453852, + -0.5333453046766674, + -0.7227426794931913, + -0.6802968646255843, + -0.7441513822257309, + -0.8039661040270487, + -0.6808761559655081, + -0.7760804417605938, + -0.6314903502227709, + -0.5085579633095061, + -0.5055720000037787, + -0.7849400750384817, + -0.6362823080681358, + -0.45904559412117385, + -0.4734645365564617, + -0.6164653670571295, + -0.8685681564948771, + -0.724242969206326, + -0.5797523682605142, + -0.7224476755874959, + -0.6214724643080327, + -0.8462251589192491, + -0.7722767007711386, + -0.6130901428445232, + -0.7738986715321894, + -0.7638754197923884, + -0.4218641355613504, + -0.5987882196930444, + -0.47590424715111496, + -0.5577348595419176, + -0.8266707654093459, + -0.4893338678444647, + -0.40237552485624273, + -0.7724436058711088, + -0.7742554327721767, + -0.5501495563207299, + -0.6464565319584006, + -0.6994338221787718, + -0.46344835061649725, + -0.5915272251774936, + -0.6615462260456488, + -0.6822075069512924, + -0.8066467170606627, + -0.6054268761622354, + -0.7000073563616221, + -0.4827925072938817, + -0.5248693810379181, + -0.5442972965258506, + -0.4991944892202273, + -0.5323572335808129, + -0.7722124549133623, + -0.5384876184436976, + -0.485096566867254, + -0.4481462292817784, + -0.42196399535020435, + -0.7504326139233417, + -0.5448933065449346, + -0.4027283850617709, + -0.5342087689069777, + -0.8001514779634641, + -0.8105810662716171, + -0.6050688141486831, + -0.7662014024527197, + -0.6655320525374024, + -0.8564183905129478, + -0.753066269395263, + -0.5346082212168605, + -0.4137242791124801, + -0.5677538719438624, + -0.6729019221383613, + -0.41115092661650665, + -0.49409100900233854, + -0.4395214664789197, + -0.7380043728029186, + -0.6444103531958606, + -0.42448646056048334, + -0.49432781775127116, + -0.6459793453046123, + -0.7507740260686205, + -0.6373210686920066, + -0.46179874813289884, + -0.5036049210495468, + -0.7898327943420403, + -0.8337758947604015, + -0.6896823672823083, + -0.5653056045684226, + -0.7110142194868597, + -0.5132807776996822, + -0.698024860064104, + -0.802922332969385, + -0.7126476767759755, + -0.4992858098098753, + -0.7140868038595749, + -0.7120136665261165, + -0.8154526942946705, + -0.7996878528661302, + -0.733423225347402, + -0.6136991455215113, + -0.5428585386055294, + -0.6732770141439716, + -0.7999203682630227, + -0.4530276670954914, + -0.8057402256631535, + -0.7642527190644577, + -0.828120745418977, + -0.5409826636800062, + -0.5206908061739373, + -0.8698038076534557, + -0.5937885500353377, + -0.8229128376006515, + -0.8018607820702218, + -0.5604714770676321, + -0.699819943004825, + -0.8099447395641873, + -0.7025308358048586, + -0.5901170234414246, + -0.4587196931347202, + -0.6476198528219038, + -0.8414690233562347, + -0.8702541137836438, + -0.8410603246561019, + -0.7195977315165142, + -0.601830408680055, + -0.777793218400794, + -0.8654075765551246, + -0.5086873577492872, + -0.8472476952058597, + -0.5193240548235076, + -0.8113770045844951, + -0.4673669640708452, + -0.4754017991780407, + -0.4739288636519005, + -0.7305935467674521, + -0.8393018235821829, + -0.6273776970121856, + -0.7664566788956074, + -0.7174934750940871, + -0.4898153715641652, + -0.8586688923725132, + -0.41560007232478346, + -0.48657367883769986, + -0.43221647444484024, + -0.49974547243934125, + -0.4681770152432479, + -0.45236949056066456, + -0.5179783816306989, + -0.6170343751003105, + -0.600077921478566, + -0.7794720926787703, + -0.7931267589731708, + -0.5121952212799534, + -0.6189407358397822, + -0.7114424133148234, + -0.41496021207186323, + -0.639330374594246, + -0.73272415130897, + -0.6725515578116227, + -0.776427471652628, + -0.6534273006787936, + -0.6509646745135079, + -0.8073166622687648, + -0.4228499880280803, + -0.6443607277084796, + -0.4291173848651825, + -0.43728576133994307, + -0.6253755652323926, + -0.6369000398268196, + -0.42956824601525756, + -0.6670754408847597, + -0.717597919423659, + -0.5925315830840714, + -0.7123845646836098, + -0.4779495422222953, + -0.6920617143121182, + -0.59575269624731, + -0.6025013801039687, + -0.45952633963053025, + -0.6713805319934161, + -0.4432369785848112, + -0.6703740553076722, + -0.5345186476074114, + -0.531609093349143, + -0.4029862534497126, + -0.864775588638802, + -0.4940213212764773, + -0.49998895127031834, + -0.8587194698756246, + -0.5735012570737156, + -0.6363663258415542, + -0.5737080670904913, + -0.44053138668595154, + -0.6040192422942501, + -0.6796803541582842, + -0.7452139949309172, + -0.5680481852424175, + -0.8504886717896631, + -0.783668723793881, + -0.45013813958516385, + -0.8268752846537356, + -0.4061409640980966, + -0.7306618721521939, + -0.48652766371361333, + -0.40577432892137016, + -0.8490035003809451, + -0.5629150963539655, + -0.41875289911670344, + -0.8711705198488663, + -0.8701479631024049, + -0.5733017821185211, + -0.7060606250012461, + -0.4279799484651052, + -0.4805652039674926, + -0.49967245072191596, + -0.5238791170513275, + -0.5976298181665645, + -0.4027484528653045, + -0.48808679472068617, + -0.7746413177771664, + -0.4418117791717887, + -0.65662837713664, + -0.7496025810079286, + -0.4682780213348825, + -0.618994799051632, + -0.854049620136222, + -0.4886181750712426, + -0.7818679472317033, + -0.632884319334172, + -0.6754177710740946, + -0.5489356195412401, + -0.7952859416058204, + -0.6320949741967412, + -0.7066189314274137, + -0.6721915440401035, + -0.47628642618078565, + -0.8657450058425876, + -0.5495102088199164, + -0.5365436216557229, + -0.5962935765703834, + -0.7425075793200697, + -0.7946684511867982, + -0.7942746401236842, + -0.5719592571798195, + -0.5666334065618821, + -0.5429972334584949, + -0.4637567407629953, + -0.7260501199846612, + -0.635618766910235, + -0.46133489344853706, + -0.40116074950880254, + -0.8548834149119388, + -0.5625509633617314, + -0.5208028882642624, + -0.436583342039863, + -0.4327998491621506, + -0.6392659136298633, + -0.7346925534308861, + -0.44239937676841656, + -0.7160406182840152, + -0.6461391977937319, + -0.5838278277698663, + -0.49774520084467894, + -0.637959330873831, + -0.68123662732079, + -0.6570259468949213, + -0.6978397857637406, + -0.5052377909562453, + -0.860691659561398, + -0.4064832391840769, + -0.8373673064904911, + -0.5233539502511143, + -0.6496623034438691, + -0.5177817065770389, + -0.5962140013089259, + -0.6433762269704854, + -0.5562106830636704, + -0.7932662493388379, + -0.7323732563661303, + -0.46017506724754437, + -0.7941152604757401, + -0.48058845110685705, + -0.42854904054705123, + -0.4216404086938426, + -0.7105724761115927, + -0.46672051514133145, + -0.8394650555575925, + -0.7834224356581319, + -0.7772311503837531, + -0.5273371398718972, + -0.5078956625789686, + -0.4343340651177126, + -0.8362440572434907, + -0.5612963213773152, + -0.5351435192878322, + -0.5146212328574586, + -0.6316534743893001, + -0.7671959691568554, + -0.4148970223075253, + -0.5620605444381601, + -0.5878271116534942, + -0.7700007199304547, + -0.5307489395093987, + -0.500742561223535, + -0.8230057801338753, + -0.6716863246567961, + -0.46733742096511743, + -0.4915892140370506, + -0.5210318409801447, + -0.5628791943840203, + -0.5188671977106645, + -0.6041834575586305, + -0.4389886562714444, + -0.48151922074261944, + -0.7216712641239038, + -0.43654248921250227, + -0.7063635916951514, + -0.5914152063422577, + -0.785387426063849, + -0.5209956130555937, + -0.7415402019640508, + -0.7608441826440919, + -0.4940619210958477, + -0.5869972788120652, + -0.40568769439590296, + -0.6951100458936299, + -0.5799415443981304, + -0.8636834947283658, + -0.6313155692534618, + -0.552290890165409, + -0.43070255109233657, + -0.43993655530712833, + -0.7088209352582059, + -0.603338507624961, + -0.800105804058593, + -0.7263283289361769, + -0.6006724851856795, + -0.4583661944931172, + -0.8023121384946077, + -0.866290059475949, + -0.45789910985039894, + -0.5024861426927616, + -0.45188373884383104, + -0.8536599280339172, + -0.6915676699321, + -0.8409784199400729, + -0.6192122044393402, + -0.427971606312836, + -0.777645301508147, + -0.5449696878090751, + -0.5894216279806477, + -0.7537170663089825, + -0.8362768346934308, + -0.46343717970248216, + -0.7229752008250564, + -0.5102858151009304, + -0.703013821302028, + -0.8690415427330125, + -0.6603728038539227, + -0.845242506198199, + -0.6121029874238704, + -0.8286632756062572, + -0.5184696220958895, + -0.5926367248685218, + -0.4533342195249507, + -0.7450673601024425, + -0.8138585777529966, + -0.770458788544943, + -0.8173094672815341, + -0.8638968551823921, + -0.4975021270087134, + -0.7046643890604731, + -0.6286009855372121, + -0.5489624939277508, + -0.7774481482052462, + -0.6202703710324393, + -0.500051528451326, + -0.8341646993516115, + -0.7198576044021218, + -0.6454618000143488, + -0.5926636431822064, + -0.6901562083794254, + -0.5345497577650122, + -0.6988303309669309, + -0.530577340094686, + -0.4336142191418199, + -0.7267276535105038, + -0.5501365076082874, + -0.5950986962135467, + -0.4819082416274903, + -0.7420640845846048, + -0.5118093674707765, + -0.49296822419323216, + -0.6498481422484861, + -0.8509351378815379, + -0.825111959306894, + -0.7138915501105554, + -0.6197042429917484, + -0.8082474988764967, + -0.7775655611505986, + -0.48679300427564753, + -0.4006182373091497, + -0.5808605877821195, + -0.5790015359569749, + -0.8624026787038684, + -0.821369549747865, + -0.6777560647084965, + -0.594375397125942, + -0.4005300511935751, + -0.5655033534578844, + -0.7838414613164829, + -0.5789571985490392, + -0.8338019446983833, + -0.45508762816165144, + -0.8397065447264761, + -0.5538228573451733, + -0.7787500536358575, + -0.7981962119627954, + -0.5592459833183274, + -0.6095072794307121, + -0.6820493484545872, + -0.5755536013705458, + -0.7690113056773216, + -0.5217325823889523, + -0.7426002299223042, + -0.5510429942542547, + -0.4865593976428821, + -0.5640488562054622, + -0.4978662600177292, + -0.5606823810916853, + -0.6602881319441275, + -0.7222537677466274, + -0.8356012104060547, + -0.46392583414973904, + -0.7836651882214591, + -0.6875386955964113, + -0.6309457120129416, + -0.774188280035211, + -0.4333483950509999, + -0.655558251005405, + -0.7261902550528565, + -0.47483423190680785, + -0.6819728011729349, + -0.6993831534343669, + -0.7121694853784488, + -0.6317093776564938, + -0.7989796369442229, + -0.45876874668006634, + -0.6923289421596406, + -0.7288046193631482, + -0.4257905246872736, + -0.40199411863620277, + -0.6604575344635607, + -0.6156727414648193, + -0.6499570953022543, + -0.7367206279781371, + -0.4234355824555912, + -0.5586741121711641, + -0.7322863313608539, + -0.5354863323188672, + -0.44021448031421306, + -0.43996274398575835, + -0.8228736519189832, + -0.45399214056194503, + -0.4837070805731702, + -0.6126176699547331, + -0.7490343031405523, + -0.558327750432106, + -0.4255277155506125, + -0.7456545495540647, + -0.587628806451443, + -0.7030453941631525, + -0.7715903079244973, + -0.41052353242601064, + -0.493699763948808, + -0.7961046346439987, + -0.48761062045194153, + -0.755390971623327, + -0.8523118764926239, + -0.4209921008005629, + -0.5421138085078607, + -0.5988306386373069, + -0.4381517500613288, + -0.6052457503036615, + -0.4622703363346808, + -0.6071233434565039, + -0.7701601485938183, + -0.5946872899237928, + -0.7676052413788431, + -0.6922087342995404, + -0.46715485617823854, + -0.6514515051300254, + -0.8590725516607911, + -0.7376583668959776, + -0.7671603207349725, + -0.5139511804241603, + -0.6569491481352536, + -0.536910260892173, + -0.779343822875701, + -0.610129985136374, + -0.605624898487992, + -0.7748111493177504, + -0.6947756832974905, + -0.7594182685443628, + -0.7414533027528522, + -0.8605077409109981, + -0.6118114047313827, + -0.7885357946552163, + -0.5552236421570644, + -0.5274877506835531, + -0.8158157655053353, + -0.867453789613318, + -0.6210717898343061, + -0.5462729311679788, + -0.513725128992546, + -0.4670023911725681, + -0.5667427512944857, + -0.6119242638093287, + -0.7842780952575998, + -0.6475426470117027, + -0.532552833989447, + -0.7726275847106108, + -0.597302478970037, + -0.5559182688925022, + -0.7750109431983286, + -0.6606949381971727, + -0.5416016558899679, + -0.5458641191336315, + -0.6871470097319259, + -0.4465315097171436, + -0.7531135907076248, + -0.4190947580934375, + -0.40009821710125404, + -0.6942134161086544, + -0.8314488579210209, + -0.4147746660896921, + -0.7425545204952531, + -0.773514069912632, + -0.8669401275926696, + -0.6028258395092452, + -0.5995991007257859, + -0.41570202864534006, + -0.8144641771690339, + -0.4384955125666474, + -0.8606709882220316, + -0.47638807535484706, + -0.470117450978309, + -0.6877203163712511, + -0.6584716762466977, + -0.7643840408350917, + -0.5061417803059173, + -0.5285871064940854, + -0.7167172036165025, + -0.6700076590400978, + -0.8205954019463528, + -0.42051751979072854, + -0.8179043552628757, + -0.7749083091914888, + -0.6865762864001898, + -0.4972921378420167, + -0.7016011075674987, + -0.4204023479749232, + -0.6850186306790823, + -0.43763784310999654, + -0.4311819833687963, + -0.6992177413119941, + -0.5611294714558961, + -0.47629479054141016, + -0.7426396921844249, + -0.7251732263983905, + -0.5181117424383035, + -0.6345707808105556, + -0.8006245344978717, + -0.6021383442490924, + -0.743093296282669, + -0.5148039324529579, + -0.7235067470078558, + -0.6128950851615839, + -0.6763142666884141, + -0.7468418035661772, + -0.5338138624894864, + -0.4495864504522282, + -0.7635510319318489, + -0.6661870752559295, + -0.5420817899986021, + -0.5397952909511634, + -0.5989894328956289, + -0.6386588927049655, + -0.7795418220289086, + -0.8120197933782294, + -0.7747368333693555, + -0.6413904739868055, + -0.42207046907017326, + -0.7377444736580385, + -0.49787925256733795, + -0.5997032608645197, + -0.42748110757207447, + -0.6816470643731829, + -0.5220664386618621, + -0.4338590905343063, + -0.5762177812779683, + -0.6279158223230534, + -0.6141227989882196, + -0.4197014831776678, + -0.6183336428205103, + -0.6504483238168104, + -0.596545974128093, + -0.7037329205159899, + -0.5226579890530731, + -0.4580787890390667, + -0.4980868466446821, + -0.7019668680947286, + -0.4795549471000241, + -0.5253940693880199, + -0.5067382368422896, + -0.7431636310821276, + -0.4554932306837373, + -0.7971706978591409, + -0.7291602490492507, + -0.556488426771955, + -0.5130162033759883, + -0.507064059247776, + -0.548377508727429, + -0.7556602878221329, + -0.49614723068767785, + -0.7460467838622384, + -0.43344906354855267, + -0.819981745788306, + -0.5354055772900512, + -0.6148685300954257, + -0.4548425487263872, + -0.7689824221668078, + -0.6242703901771469, + -0.7490075086691348, + -0.5342929701742326, + -0.5744662264733855, + -0.7973510838594287, + -0.5104150347352006, + -0.42734471809596836, + -0.7785901776382929, + -0.693979962166076, + -0.5881004089245583, + -0.7921290689777033, + -0.49407488120866166, + -0.5238062840480204, + -0.590707024886219, + -0.6742121347082513, + -0.43663486805177937, + -0.41692193859713245, + -0.42168324936743634, + -0.7166972348123732, + -0.473190839634086, + -0.5608601236034059, + -0.6214479279555837, + -0.616358926227054, + -0.7812903476492035, + -0.4315929698677523, + -0.6422078578568069, + -0.4460690284208533, + -0.7613021428815617, + -0.687789024060172, + -0.7192058005546531, + -0.7493107153965961, + -0.7279972317070117, + -0.5597080892057961, + -0.4424935633878055, + -0.8451601177874238, + -0.7783653853255048, + -0.6625361550586355, + -0.4445022883666946, + -0.7895671253959242, + -0.7378957054845555, + -0.81842302297279, + -0.5697070556545576, + -0.8438615396856316, + -0.7398001196216165, + -0.6582406256025793, + -0.5292525446337211, + -0.8343771438969615, + -0.4121884391289932, + -0.7304955000413721, + -0.5642588901407244, + -0.8270850065590253, + -0.746676218578131, + -0.4940836664758103, + -0.44697870639021586, + -0.6389412748041079, + -0.5366948944569678, + -0.8069461720433839, + -0.5865779167485078, + -0.40874042183977694, + -0.6035489971512153, + -0.6283007550555298, + -0.8314413137606167, + -0.5255548228449254, + -0.48491728279943197, + -0.7944103143148639, + -0.7027420951122184, + -0.5961737781533956, + -0.5119363453418879, + -0.5197815779327639, + -0.6898938139211311, + -0.46265161005761635, + -0.6115301172728609, + -0.45699608031075295, + -0.6328442611745101, + -0.7324432593340098, + -0.6962850423270001, + -0.8246960038017368, + -0.5950451959962176, + -0.6813226733781492, + -0.823209382656477, + -0.45432230776328103, + -0.7377318171680204, + -0.8360182145459938, + -0.5983490444952411, + -0.47135722776931244, + -0.7019831912386567, + -0.6895694756954559, + -0.6065187710236815, + -0.7574795719856279, + -0.426110677374744, + -0.6707898260165586, + -0.6400685594451385, + -0.6043600827297603, + -0.4145958312317746, + -0.8397453291736653, + -0.7144229510374824, + -0.5246190652708009, + -0.6801154547564139, + -0.8010239129691168, + -0.6293727457851086, + -0.5587511508455328, + -0.8344962103786387, + -0.6978119136711232, + -0.7524940718685782, + -0.4967460084245257, + -0.4453791878174632, + -0.5334509967420784, + -0.4469139050372823, + -0.6749121597025438, + -0.826895735076435, + -0.43450375733765195, + -0.6125300212059928, + -0.7850929270891486, + -0.8039933044388984, + -0.8422145539057495, + -0.6719330178627023, + -0.7304105211970028, + -0.5473655517054821, + -0.5885289937997383, + -0.5250793867633705, + -0.7045982774978623, + -0.6318284103742724, + -0.6272850379041768, + -0.5582458130390673, + -0.5701254513736245, + -0.5304120506861556, + -0.7758542397410498, + -0.5297039674002437, + -0.7506680322670011, + -0.6594178695580419, + -0.4499649364424546, + -0.400034676909116, + -0.6825151959855649, + -0.4435213764871082, + -0.821676245045807, + -0.5047529074786282, + -0.8275125992226458, + -0.7881891968363677, + -0.6103413184944346, + -0.532907255440281, + -0.6101310453991199, + -0.4551318622330162, + -0.6875782474957024, + -0.5626444201161739, + -0.7830553385999023, + -0.5406775060633685, + -0.6437442681603645, + -0.7496594860101123, + -0.49626637563505205, + -0.5048065639159098, + -0.42706216038354067, + -0.6060904151424094, + -0.8248884607466241, + -0.4302060396859006, + -0.8132412461672198, + -0.7518513673624013, + -0.6274297776902996, + -0.4888281160010689, + -0.6991318044866581, + -0.6351866420621555, + -0.4417288786623369, + -0.515787061426292, + -0.6454904352536814, + -0.43863959860768315, + -0.44252399007465254, + -0.8417618831147329, + -0.5582860724382452, + -0.8172697287001903, + -0.7510584110926943, + -0.7374632182806025, + -0.8197508492836627, + -0.5015159098444181, + -0.7883629331647785, + -0.6743146120910585, + -0.6425211623020723, + -0.5936282901280504, + -0.7851000324400909, + -0.40633882574363833, + -0.7843338964594352, + -0.45276317444225095, + -0.5570271790587603, + -0.524775695881976, + -0.8485803521775308, + -0.8084128118988726, + -0.4957268269609185, + -0.5815649582211088, + -0.6363447155345116, + -0.7918158274791595, + -0.5439760647615688, + -0.645837061710155, + -0.7906214263555092, + -0.5106114022106661, + -0.7251546045304802, + -0.5137196474745636, + -0.8061406266138336, + -0.5633114764317299, + -0.6079811386707996, + -0.717797809933226, + -0.556321912342011, + -0.8193118162995425, + -0.5308606114297749, + -0.6728222469378244, + -0.45760074645405496, + -0.5530010857048346, + -0.6482500885616249, + -0.5170239070883236, + -0.5702133652633025, + -0.5953431144849373, + -0.6728082430182116, + -0.4940396211268657, + -0.704945768068886, + -0.41345128563874267, + -0.5245773312161008, + -0.5387455269446118, + -0.7333357388896808, + -0.5592476323620229, + -0.46172585665889776, + -0.4842267717645162, + -0.49436382222485936, + -0.8166170530976984, + -0.7708873874549295, + -0.8223510586768047, + -0.5723781079569172, + -0.6757614378680125, + -0.40107482738084405, + -0.7121300962831376, + -0.47011814842669153, + -0.43353411377248907, + -0.5475470133294429, + -0.4472785512030653, + -0.6044113435343748, + -0.6802085723799919, + -0.5401962713178952, + -0.6675363847608368, + -0.6333391703229165, + -0.7450296542831525, + -0.6058614775604043, + -0.8146227271867327, + -0.7982645506432805, + -0.7752256273567066, + -0.5639059482663, + -0.5828677879063581, + -0.5331885435520346, + -0.6258757520499608, + -0.7686826134639021, + -0.6519429149729351, + -0.8150497518120713, + -0.5669525341685437, + -0.42293408591086284, + -0.5245974637224353, + -0.469054194797762, + -0.42221139324782236, + -0.653855048303782, + -0.6162770219034265, + -0.8299650652847279, + -0.45933521816901907, + -0.4727352589366061, + -0.7279851384967404, + -0.6958343911747642, + -0.5117275639520718, + -0.5519645825601706, + -0.5439896380511826, + -0.567608723851897, + -0.5497384275254249, + -0.7645368722698275, + -0.6279599388845433, + -0.7967253389755845, + -0.5157530720337361, + -0.7988658603523567, + -0.720693422520128, + -0.4252876098795307, + -0.46026075480072687, + -0.7210639853654608, + -0.8264685053071893, + -0.6699083071451746, + -0.5037463784265019, + -0.722620607588983, + -0.7179643990843315, + -0.5619057217404317, + -0.7992692680422753, + -0.537893172015814, + -0.5496455488605501, + -0.5275439260298309, + -0.5294818894083128, + -0.8320434177811115, + -0.5458658775193959, + -0.8413924341964811, + -0.5466590537325984, + -0.5031850083837046, + -0.7407558414268971, + -0.5003107727520977, + -0.5467046568602019, + -0.549923914660738, + -0.8466559362378494, + -0.5168195594078708, + -0.8470973205895106, + -0.46099554552201627, + -0.6145587000348827, + -0.7238715581369018, + -0.5129493477841907, + -0.6002353712427719, + -0.5535263286668488, + -0.7438051393270044, + -0.4448639811661602, + -0.8363020973887514, + -0.470259017266684, + -0.7829204181228636, + -0.5229646188292781, + -0.6255395441041709, + -0.4214877929698806, + -0.8134902591603245, + -0.8144403228664918, + -0.747467947460999, + -0.6159681358141085, + -0.532636527550919, + -0.5221301334808164, + -0.6791743700157741, + -0.4552865596399156, + -0.5371243739007618, + -0.7404134635224947, + -0.577418314409353, + -0.4593869362191912, + -0.40122793544568663, + -0.8370187847672368, + -0.6277562137802485, + -0.5006648209963185, + -0.7016375297840347, + -0.4542258350663746, + -0.5193060327963266, + -0.8260079504032307, + -0.5817621638828252, + -0.6299295056196349, + -0.603341081027052, + -0.5425928785243737, + -0.572165820587484, + -0.42841906587365725, + -0.6683420877783194, + -0.6559755931299951, + -0.5919546763775025, + -0.46773010882164767, + -0.6661902974906776, + -0.6379505951552354, + -0.682038904804448, + -0.523286074191958, + -0.6978425233256524, + -0.7385462084776812, + -0.602775407325234, + -0.7779492992606376, + -0.46543761796190775, + -0.5647693700439683, + -0.7551606401221119, + -0.73296923122076, + -0.7024639219077123, + -0.6840602423400965, + -0.8121380083430346, + -0.7416152771217663, + -0.43062745480279013, + -0.649655112658566, + -0.5014569546982877, + -0.5347048403754718, + -0.6858850998967676, + -0.46292580134323963, + -0.7658151573508563, + -0.44441501396987687, + -0.6880031479934066, + -0.6752076491234247, + -0.40308812697893004, + -0.4787058785747699, + -0.7942385884554305, + -0.6759916054850685, + -0.7909996853029232, + -0.6300373472590701, + -0.5745815833751011, + -0.8055169017899276, + -0.4284302384189549, + -0.5259057550396231, + -0.4442492267377186, + -0.45488798333149566, + -0.6225963962804621, + -0.8362670951695124, + -0.6873421900042069, + -0.47278973945685376, + -0.4911201880583373, + -0.4664620532814192, + -0.5469008378891498, + -0.5619450693845761, + -0.5967489571986164, + -0.6450503377206642, + -0.7493708598237878, + -0.5414511100593282, + -0.5506267212214582, + -0.7326144616475854, + -0.40439820020081846, + -0.5817467819595222, + -0.49427672996567273, + -0.5507855322566391, + -0.531404556629433, + -0.45496934419387486, + -0.4264993130262393, + -0.8218989453180197, + -0.5217954712017183, + -0.6263607576337359, + -0.7743332582653202, + -0.6850191449495245, + -0.41236642850095906, + -0.5194032212383647, + -0.5716303975120653, + -0.8268230989185344, + -0.7643003350208646, + -0.7267566104824773, + -0.4708337047924596, + -0.5942085351876928, + -0.5313044142881094, + -0.612237866493764, + -0.44002088327400957, + -0.6693942086539718, + -0.5649149321537501, + -0.8393603890932727, + -0.7063525943062712, + -0.6134528153792393, + -0.5201798911602713, + -0.41153178599573714, + -0.5143808983363334, + -0.813528488649012, + -0.8103520021979466, + -0.5517468070695837, + -0.5875251945669835, + -0.4720544498405985, + -0.5075635911910783, + -0.4271055802149259, + -0.7318885928308998, + -0.6633278368206843, + -0.4232617409065609, + -0.7115467200058561, + -0.43906251414071634, + -0.6996452621188823, + -0.5776590353858415, + -0.7691558940358486, + -0.5825580027373536, + -0.43263409428593935, + -0.44567978087110416, + -0.7391197638766378, + -0.7771530061442592, + -0.626592940461731, + -0.7719233355162467, + -0.41185352022182387, + -0.42045858637557715, + -0.8075585669955844, + -0.7540967276086067, + -0.7238566451339197, + -0.6229142122603837, + -0.6171149536973121, + -0.49816937365571606, + -0.6801382728328262, + -0.43191657634496794, + -0.6390213027113844, + -0.47560272728892833, + -0.48338552883074026, + -0.6509676504127192, + -0.4294746676145822, + -0.8014212738191927, + -0.6001219551284604, + -0.6374823787787444, + -0.7843930148619913, + -0.7531057964067825, + -0.4003215046378119, + -0.5581590343658832, + -0.6087270804022229, + -0.44335933340035183, + -0.506081024933025, + -0.4274182156805524, + -0.7212761073713412, + -0.6327859946670147, + -0.5701044028607467, + -0.6950229722017199, + -0.6034828260066448, + -0.5737806726071735, + -0.40133299217978696, + -0.572865719089995, + -0.5609168340771133, + -0.6234220036013294, + -0.48089025263791396, + -0.7517182784436981, + -0.6993321148980166, + -0.7257151384337408, + -0.6823952196470683, + -0.7546039978733691, + -0.6694810507982433, + -0.42324760976281856, + -0.8073302941538917, + -0.6607178232534401, + -0.8391094390590382, + -0.4361482121034068, + -0.6330114472676043, + -0.605676976175849, + -0.7368817976377398, + -0.4438870151533168, + -0.4910604027934833, + -0.6968943465973905, + -0.7375599604990924, + -0.7173713647338542, + -0.6219605858812551, + -0.7135972618680386, + -0.5691674124992312, + -0.5068765648801545, + -0.4953288561694925, + -0.43984828166020484, + -0.5146207508811976, + -0.7198093091762877, + -0.470993614457085, + -0.47310044966076975, + -0.6115543621957203, + -0.7596581225399066, + -0.6367512528643412, + -0.4352203698271209, + -0.8126433852705558, + -0.5024404762793937, + -0.5143158001298792, + -0.710584101254302, + -0.6316878819120892, + -0.5529841709355026, + -0.826819963876856, + -0.7318034703742525, + -0.5631354967177522, + -0.6260847125861311, + -0.5038796362550745, + -0.6072531235898608, + -0.4562087438976456, + -0.8008962216392517, + -0.6302123004503373, + -0.7620233584663977, + -0.7192657920990401, + -0.8318529228099405, + -0.5514885648740091, + -0.5179815211489145, + -0.5134371334535874, + -0.7555813140519895, + -0.7292183426549729, + -0.4259991921937277, + -0.8108101843853769, + -0.8028222654421902, + -0.7686147571829047, + -0.458949841877365, + -0.691665276061173, + -0.6001547556384301, + -0.7801988082418763, + -0.6324889790104331, + -0.7995644582081588, + -0.5074001208219776, + -0.6628722357956609, + -0.7558407977969591, + -0.572352273977053, + -0.6589537080726257, + -0.423555029736253, + -0.845585053590429, + -0.7440875962277995, + -0.6205591098157783, + -0.7286451288418503, + -0.6689714008862, + -0.6533584478726011, + -0.7218105144566935, + -0.6944542585438032, + -0.5543990865309047, + -0.8371735284924718, + -0.7274939281348235, + -0.6617282017714516, + -0.40190629277813655, + -0.5319449776352825, + -0.44419357457371894, + -0.6639267134726445, + -0.7562041121324701, + -0.7897172550775273, + -0.825390976696223, + -0.5431138910762254, + -0.7849720980189466, + -0.5402235731318973, + -0.822894947392818, + -0.4228872253507327, + -0.6103827077012187, + -0.4669433739632042, + -0.8387220390077937, + -0.7096372090058503, + -0.703660651792201, + -0.815078725377902, + -0.6074603309507589, + -0.8285167471303856, + -0.4331361191200299, + -0.6996927375792759, + -0.8322972214002753, + -0.8370640906061005, + -0.4738512189807194, + -0.7289092751228848, + -0.7550715488522829, + -0.5696346412961633, + 0.5483286662381058, + 0.0413912613673908, + 0.5707974139556965, + 0.03167865885589449, + 0.1739117123170023, + -0.0867303548508277, + 0.10567733957665193, + 0.4446648205771079, + 0.025291352451735805, + 0.2959632225652493, + 0.28691464498316754, + 0.665121535678432, + -0.27808318793213266, + -0.31391637050468135, + 0.14407710270037022, + 0.11980012783901317, + 0.39532842476866037, + -0.23268349055715573, + -0.36755983251470065, + -0.06552570296709398, + -0.19938969528054012, + 0.3023004397615746, + 0.4439635895614146, + 0.19146246586518478, + 0.304846069846605, + 0.15825458649843538, + 0.04681789245636442, + -0.21815078588725897, + 0.683975487079887, + 0.6129148477807459, + 0.05139479754612686, + -0.24243831469604224, + -0.36316853844589836, + 0.6558965418463504, + -0.31676851577462545, + 0.17485286032274627, + -0.18250721947577764, + -0.057083583354271494, + 0.09870380323766309, + 0.4152822488643131, + 0.12105563682746934, + -0.1831710796647729, + 0.06809777760534541, + 0.24716006770317278, + 0.08154386884818726, + 0.47562598419182467, + 0.4029300414088576, + 0.06584726084469117, + 0.6838732359880638, + -0.10091223399656785, + 0.29874488226978835, + 0.4268552689836591, + 0.6591558905341731, + 0.31990048342453326, + -0.08170134106316912, + 0.5765651792900074, + 0.6264846915981316, + 0.13393368043738718, + 0.6774536286918379, + 0.4682593389117242, + -0.2326008857791511, + 0.6026394235377074, + 0.08316621841842681, + -0.06121410524560533, + 0.05029754206138809, + 0.408326629391887, + 0.18549894813153944, + 0.2238947164503109, + 0.4920389443559219, + 0.459598059186448, + -0.24908678529722578, + -0.27619323946590446, + 0.5784966620001051, + 0.3239748692761134, + -0.17598880620388554, + 0.4198929437298471, + 0.4070361755743571, + 0.07747463978362784, + 0.3292065771235708, + -0.1930563277147425, + -0.2865446820106627, + -0.09388186280100486, + 0.1077091958142039, + -0.006435452298299227, + -0.09836171396411364, + 0.4127434857695482, + -0.265305384603161, + 0.3113235373916736, + 0.31396271686154176, + 0.3400786697816435, + 0.1544559503221694, + 0.04890695802388417, + 0.19997108432490107, + 0.12978664306286303, + -0.11136370035233978, + 0.5288113380403673, + 0.3049266506759619, + 0.20870611381190818, + -0.0302067076805817, + -0.021677144286178285, + -0.28147257652998575, + -0.10828324612681772, + 0.5151101000936816, + 0.5974425141348656, + 0.39047854711401886, + 0.04850868080917725, + 0.2518897173916741, + 0.5233415878420478, + 0.33234018872189053, + -0.0015024886570236817, + 0.43118101986327195, + -0.126746390811946, + 0.5041672871027489, + 0.5463419553288756, + -0.28446522374297223, + 0.4556111543455762, + 0.2811232542566354, + 0.072958807265805, + 0.6008589399360792, + 0.22241302617879977, + -0.014693385334985154, + 0.2697605874054204, + 0.42314114966138605, + -0.09380844511837438, + 0.06382939351519423, + -0.3940100347125687, + -0.35343328746382885, + 0.5582490519900529, + 0.23968870299176148, + -0.2897950642015437, + -0.23590525791657688, + 0.5582040021447574, + 0.0901921530558028, + 0.19096432540239106, + 0.5085413559331687, + -0.2819777016729769, + 0.6274351121133029, + 0.0803488619093804, + -0.03627288109381971, + 0.5267319012663372, + -0.32217299405779365, + 0.5577243525019806, + -0.21363119268906633, + 0.14024017063550098, + -0.09342043098175151, + 0.39311075611782476, + 0.12324023731817557, + 0.10554599636146711, + 0.5686503082510124, + -0.054895079425861304, + -0.03708273752732344, + -0.16878297569500972, + 0.6835634020949456, + 0.44226223581672175, + -0.065840437386112, + 0.535223562707779, + 0.20602393705441535, + 0.49942311766686487, + 0.4062884986935571, + 0.13137252004903965, + -0.15860024147162588, + 0.4450753698048978, + -0.01059900726551205, + 0.16953030307525763, + 0.22857386769404242, + 0.6750076207276324, + 0.36185197324549845, + -0.35531655659612804, + -0.015506030296920215, + 0.6247165293619813, + 0.09650927744405713, + -0.3283494319552957, + 0.4353583232060778, + -0.21146594690577716, + 0.27462032364735156, + 0.4983374285544414, + -0.02893251016662035, + 0.12138446582622697, + 0.2724859969239214, + 0.2732044803222038, + 0.29464091280019844, + 0.2515573555730283, + 0.539913985664312, + -0.3409131008300271, + 0.28251122902264003, + -0.1341377015615644, + -0.3414329565053121, + 0.12422816304646533, + 0.32081277155263077, + -0.30631678910027815, + 0.3903389767551282, + 0.038613592787616835, + -0.20527797304020579, + 0.3790226681963229, + 0.18366855105453594, + -0.016681624563813946, + 0.36042616306869246, + 0.10062239799609896, + -0.20422945431858916, + -0.3667380549150062, + 0.6176196305386906, + 0.4456409981481947, + -0.1765274021845721, + -0.006134617365650852, + 0.39924214151629034, + 0.6535766987457242, + -0.12489372906421953, + 0.1539631289346225, + -0.06691116776821515, + -0.03185942317268453, + 0.3307713004862859, + 0.07320167932330973, + 0.2567122381702531, + 0.15179128463901237, + -0.13289263470813523, + 0.1258746205239739, + 0.5148701475324763, + 0.021013839301173065, + 0.5734598654608045, + -0.013056417228834105, + -0.030122657824829535, + 0.22083123524410198, + 0.09661521599793932, + 0.25570420720186393, + -0.036301895242562, + 0.35789273878347827, + 0.30420215012949114, + -0.3119837762544203, + 0.0921624811416048, + -0.24352249535698822, + 0.4992819261749549, + 0.08851460229147556, + 0.5753784880653896, + 0.5565045047220563, + 0.3227790432568519, + -0.12444961200005944, + 0.06328793513534914, + 0.07505519390025994, + 0.509093863588136, + 0.25403920930683654, + -0.2129899646769929, + -0.21495347072709922, + 0.5677362941122993, + 0.4699031405514337, + 0.10094200975644418, + 0.1255248030655357, + -0.20511820027463543, + 0.44263268878863526, + 0.5183241171117136, + 0.47618942087181015, + 0.5010031071154347, + 0.13471038482500808, + 0.6413028418938879, + -0.3415441487806759, + 0.432298658928167, + 0.25749489719370255, + -0.07508279234199333, + -0.3811347270853453, + 0.45896961628831756, + 0.23223125313662818, + 0.3968745750112813, + 0.1403228740839949, + 0.5435102975331177, + 0.5342065451269443, + 0.4719488037127878, + 0.32985201864361524, + -0.04012196611562835, + -0.39403679844736994, + 0.39236165787966903, + 0.4233084424262882, + -0.252192731245116, + 0.5026432980942069, + 0.17054822776422918, + 0.5611858865248557, + -0.14971420530047297, + -0.12012839614357151, + -0.3231540787592665, + -0.08007639347540407, + 0.36140774381231067, + 0.5899293789465339, + 0.24015370765691801, + 0.6646034397519428, + 0.2185754786621822, + -0.07812600506698486, + 0.36086766355374345, + -0.02142033204449212, + 0.21336896904380787, + 0.5844807813147387, + 0.3031680675843855, + 0.5146834089048286, + 0.19664279576695642, + 0.6551266234300163, + -0.35272622066258147, + 0.6316012255230276, + 0.04845834639024643, + 0.2844755476342027, + 0.4388668962557757, + 0.23346298904508878, + 0.5806627353719577, + -0.022308658041518215, + 0.4226093851260131, + -0.2812337057322626, + 0.00874807385173837, + 0.15767212206232262, + 0.5412808466173324, + 0.5930126440083054, + 0.42726849300198655, + -0.37848686954380945, + 0.06605320473361909, + 0.14651210258355984, + -0.3669917445368271, + -0.0793733828924505, + -0.3263651891870024, + -0.3198399587740258, + -0.3523411850207987, + -0.38874817221583824, + -0.19292354137597553, + 0.4473668179317525, + 0.4312598667238079, + -0.05020498838344001, + -0.01849449135656772, + 0.20217774374736408, + 0.6000053951019634, + 0.5411853759358077, + -0.07052419321923059, + 0.3468009658230531, + 0.43630212210658315, + 0.6567294562618006, + -0.30606051541936885, + -0.3163550459320739, + 0.47418202104811313, + 0.5911113552606106, + 0.34774272904714476, + -0.3199697684582428, + 0.6768161272304601, + -0.10679915562329373, + 0.36989338613006184, + 0.35664180245646004, + 0.3510318692451748, + -0.023395406398904417, + -0.17456673059756858, + 0.6151323083188268, + 0.3714315259645755, + 0.6829315963402921, + 0.31793112719660477, + 0.39314467459546376, + 0.028235520726778707, + 0.17593769695730455, + -0.1041873001427362, + 0.2389440583192738, + -0.08513273598338922, + -0.22484386920645227, + 0.6507409216061287, + 0.5496012568835084, + 0.1826909937689094, + 0.2744175584233097, + -0.0885452914364967, + 0.6009741160158463, + 0.42344236859322937, + -0.019674750100237115, + 0.18464078811333695, + 0.5260421249437046, + 0.5992943230947216, + 0.5347861217003309, + 0.6623004673061655, + -0.13550013339985634, + -0.2636550920579988, + 0.5579446277560139, + -0.1992437960380505, + 0.5361412377126898, + 0.36500653548493733, + 0.054889454673632154, + 0.07652353020552488, + -0.39123247353357943, + 0.5513502995549472, + -0.15928634280391948, + -0.06130229980601404, + 0.22025075221554924, + 0.1397590320159534, + 0.18295346852066952, + 0.20433790028721988, + -0.15978883349859457, + 0.2620548369798984, + 0.4947390194349631, + 0.0948305134869743, + 0.13421558434468017, + 0.2720817642339487, + 0.5597791890548951, + 0.29152243690043533, + 0.367103408172773, + 0.3861540329996139, + 0.4644549948316331, + 0.15303230685039948, + -0.21501216662535938, + 0.03595968896943785, + 0.5736739696200186, + 0.2879931832445547, + 0.35254824734896706, + 0.029035431177581394, + -0.16035256114410146, + 0.6143711279997192, + 0.24954975262100376, + 0.24238848744898234, + 0.3041006733142725, + -0.17822628134062987, + 0.6040715896366374, + 0.07475319932003432, + 0.382880684557135, + -0.18653236839421633, + 0.30727020928574666, + -0.10617609880829332, + 0.5058586593165861, + 0.10908602032244064, + 0.27412960237088546, + 0.4286440473447103, + -0.31318533673793947, + -0.38004957501676173, + 0.14852806093232318, + 0.06547585982564069, + -0.16735674219959845, + 0.20973271641720526, + 0.5599630212358687, + -0.30566873358390584, + -0.09747532168353401, + -0.3207688927379211, + 0.607263268356455, + 0.6056238448601005, + 0.46747108790962577, + 0.026657665343333525, + 0.5224339401742286, + 0.327065237162084, + 0.4571797712941732, + -0.023356098004496395, + -0.2265306297549034, + 0.1193939421921163, + -0.16255546554433362, + -0.021036050242628057, + -0.3301176560003588, + -0.14095232971524302, + 0.057798954149350434, + -0.06222813430718599, + 0.29656150866481157, + 0.22331199258772805, + 0.2088588337190591, + -0.1897703636270331, + 0.13221275677041566, + 0.4735691771517456, + 0.4192271365534399, + -0.252332108612617, + 0.011125510333012234, + 0.1462187813364526, + 0.2688557658950691, + 0.2558049560610315, + -0.05743738965194173, + 0.43025463217626836, + 0.2408291849651708, + 0.0025488005864025554, + 0.14994483889477805, + -0.2731892334516846, + -0.1953933738988901, + -0.20766667858131907, + 0.36389495055563903, + -0.032607824130428065, + -0.03005752422383151, + 0.48272916358374407, + -0.17473568551903818, + 0.538613321164579, + 0.3360841239076835, + -0.12258838356998458, + -0.20435326772416632, + 0.11261740747161286, + 0.06415799163363872, + 0.34017801496674405, + 0.364155510297681, + 0.38107602417983966, + -0.06030543549635009, + -0.20178754621774972, + 0.5001777404954814, + -0.235703348571336, + 0.5432569849018076, + 0.13091014337197515, + 0.5080213228617149, + -0.04894364726799616, + -0.06191067204639694, + 0.5936036760936104, + 0.3827508929797673, + 0.3438686204718653, + 0.3726975445272708, + -0.34463219358241576, + -0.20624205470745385, + -0.07032600855719395, + -0.21677305681214643, + 0.005764062936258418, + 0.17915302542087497, + 0.5307368322642319, + -0.3973330097529477, + 0.6658838548336564, + 0.6575628690267544, + 0.3299594476104917, + -0.08652964915605793, + 0.49398735039547836, + 0.47644365179489234, + -0.21737668134404495, + -0.39941107398438047, + 0.5653962227166628, + -0.22610400597445182, + 0.5369773728323408, + 0.16324257663768993, + -0.108056428868817, + 0.5273196773753761, + -0.1290222561899972, + -0.03394055466256518, + 0.17749101527418765, + 0.5849958442009796, + 0.3765485804054689, + -0.007362923547789946, + -0.12646738293881393, + 0.3876214889514781, + 0.44754518377595676, + -0.2975814455937438, + -0.012964126214854432, + 0.2193615479003177, + -0.25685172284632907, + -0.3516860560607565, + -0.09060240701119449, + -0.1338974620920395, + -0.20042811167245306, + 0.24478877128860743, + 0.6445180562878786, + -0.038636009608433, + 0.019470415802647856, + -0.3934138908179244, + 0.3325812744631581, + 0.527379914959846, + 0.42416555725080685, + 0.3353214692006473, + -0.33260919224976193, + -0.3367727362122819, + 0.1629354114974222, + 0.07681556070958562, + 0.40254826478325956, + 0.6805477008788038, + 0.26049855381590126, + -0.28960339343051034, + 0.48423666845857005, + -0.3883285391989959, + -0.3861197736005596, + -0.29415621454185636, + -0.3119039085715304, + 0.44695199151883613, + 0.09422563996285827, + -0.22075002661240783, + -0.33789493669423576, + 0.39383673372781147, + 0.07286056822682474, + 0.16595971130105647, + -0.23391067016131126, + 0.04715942359721392, + 0.6246940232907995, + 0.28619470566706473, + -0.29536434320827, + 0.5178715504090599, + -0.2579589654916741, + 0.0706402136089509, + -0.20988341822434442, + -0.32014736053226783, + 0.4023572046109576, + -0.22095722941115623, + 0.07234912274151817, + 0.45515703027179455, + -0.21296707666720344, + 0.5288566048568571, + -0.3085600050041309, + 0.4975525517868289, + 0.08154877760316043, + 0.5975973779560186, + -0.18091992995754516, + 0.5084067522510496, + 0.03904428527772896, + -0.2130650020539943, + -0.32584386005399985, + 0.18532463045503467, + 0.3737987072685308, + -0.29946541484557665, + 0.46783800439639633, + 0.29624999116807993, + -0.3585195304832399, + -0.38692310138469505, + 0.35193185208271016, + -0.08077025713960295, + 0.28669826182352753, + -0.3651994045967508, + -0.24904983214831664, + 0.23002203517417352, + 0.15957629221720393, + 0.3895912035495337, + -0.35104812653782447, + 0.33897415466883063, + -0.24335781399977444, + 0.6632991605967983, + 0.003954236353345408, + 0.28463038037033883, + 0.1593116032658931, + -0.017665095765043992, + 0.21620580164126157, + -0.28804223361288633, + 0.4857428415595205, + -0.12909781191507635, + 0.30230802835374493, + 0.4912535735870518, + 0.440502641812175, + 0.18883396188700796, + 0.5018142705531831, + 0.5450617436876921, + 0.6792681688337391, + 0.508518161595955, + 0.2503779625378997, + 0.6190679625688248, + 0.2650072755878988, + -0.03482171271480733, + 0.5374641419281643, + -0.2008065277772143, + 0.24403018322101366, + -0.2586576795251028, + 0.27060507139831447, + -0.18107047182221514, + -0.13798394484167031, + 0.5185603795763968, + 0.4150954752742523, + -0.13481993443676327, + 0.32391848178703875, + 0.4381558697368123, + 0.6751778313656204, + 0.6717393529910777, + 0.6134578391001063, + -0.013065260388819833, + 0.23160074007175802, + 0.13776808222360137, + 0.35078277882207975, + -0.2386109878049118, + 0.6181514770335131, + -0.055647669845623304, + -0.1997488782079388, + 0.03457005356772663, + 0.29230281849507733, + 0.014841815716369777, + 0.3198842594672635, + 0.438964989591934, + 0.18471163424683945, + 0.5591301978618665, + 0.6838892447958874, + -0.068032527656891, + 0.30852253238976357, + 0.48269939909462245, + 0.6631425772552989, + 0.525855070815404, + 0.586769357056604, + 0.43319814401068, + -0.09924133916578287, + 0.1367807918924695, + -0.0709892226946729, + 0.30207195998317116, + 0.10273998688785113, + 0.4751450542980823, + 0.6645823436833748, + 0.39582642602968865, + -0.0409038606855433, + -0.14392444353816936, + -0.1608698767330516, + 0.24055609476816286, + -0.10786422801420587, + -0.20735570199407913, + 0.6494571313374785, + 0.367947464776046, + -0.3364833371245852, + 0.1243637934863282, + 0.6676151634537758, + 0.47818573356343097, + -0.25864890830005427, + -0.06551021835474247, + -0.27889287392856943, + 0.4288229175321736, + -0.011093975532778022, + -0.1220661937301184, + 0.30555284909991953, + 0.30643304308122576, + 0.3187841153810449, + 0.3902008574456802, + -0.35568359500726543, + -0.033009660903318805, + 0.638399876187001, + 0.5381949419650282, + 0.438703878851994, + -0.058516185329337334, + 0.17035451608950736, + 0.6568068981981042, + 0.15164501784877882, + -0.10812978265576273, + 0.5977873300410914, + 0.2535014047113153, + -0.0635131363648535, + 0.16975386789788383, + -0.10131603952133994, + 0.26349000423322433, + -0.25896117485116854, + 0.26913777454109733, + -0.3713777177791715, + 0.2243327421364093, + -0.06062920110638381, + -0.38734225742500444, + -0.2642133566848545, + 0.2481073072502079, + -0.066031497346979, + -0.38103535215000844, + 0.6629882609989447, + 0.5869092562953232, + 0.4264179161736552, + 0.5903447172053692, + -0.19166480059179256, + -0.26146033013098224, + 0.23546365682204085, + -0.26097145636669267, + -0.31182888629226635, + 0.21114193971592965, + -0.03606310504129745, + 0.5395413743725391, + 0.1476560681304866, + 0.4222538530292633, + 0.5994668342075413, + 0.5206903061264027, + 0.4428862532927901, + -0.33458534053624484, + -0.1297075932085694, + -0.19534988516534924, + -0.27074674734888593, + -0.2734742559179009, + -0.16287015098549387, + -0.16793015496878294, + 0.42952633288826636, + 0.10120957719590495, + 0.13168333870652738, + -0.11966214451524126, + 0.2775945568245143, + -0.23817591668877847, + -0.08760012922189514, + -0.1772351271555049, + 0.05622588440718901, + 0.04944654425572087, + 0.03390970119119785, + -0.03380178836739306, + 0.2113452788282809, + 0.2815710544014416, + 0.5956731480812829, + 0.07713585171771481, + -0.3914385899184187, + 0.2097409564696746, + -0.2589072008807016, + 0.6649340128070239, + -0.3392718274149841, + 0.04678612649602015, + -0.290789951586387, + 0.5283920779433784, + 0.2817952873632411, + 0.38893621842521076, + -0.1931342048505327, + -0.3081153532161005, + -0.34465357210562797, + -0.31568051232119293, + 0.630227847639352, + 0.5751553305071169, + -0.3988421254483325, + -0.012057234159418062, + 0.4451922719640232, + 0.5280335836840427, + 0.11706575805018149, + -0.07098684802270355, + 0.5603842703758407, + 0.3862221048209695, + -0.01832842975600607, + 0.3509772459757601, + -0.34636112267508457, + 0.6420195136774599, + -0.21544080184306558, + 0.6378610564722539, + -0.3248704952597652, + 0.6514475875079683, + -0.1369249514599341, + 0.5806342631139585, + 0.054122589387270825, + 0.0678326406798771, + 0.034689981914516055, + 0.26844486165493364, + 0.50283537062052, + -0.23972282098514713, + 0.43458908393945195, + -0.24417483550927488, + -0.039743842121988726, + -0.16187756170292303, + 0.5959508368718962, + 0.6238519362663247, + -0.06342559329034558, + 0.23919251974099964, + -0.3247908648344276, + 0.013328196593526853, + 0.38999809214998893, + -0.2028943409762142, + 0.11967405491516814, + -0.10314332357768363, + -0.09925283416068942, + 0.31328004032845913, + -0.32301725383442015, + 0.23322324620376056, + -0.13570408007126122, + 0.4526540340484472, + 0.06504855479369698, + 0.5447307058549141, + 0.5665504094390533, + 0.07394840935847274, + 0.24216667733592157, + 0.4960774880784288, + 0.0984760941231087, + 0.002628777111741254, + -0.22026106849626786, + 0.30784574038550394, + 0.5118141718983771, + -0.13894737655041994, + -0.2633452346789654, + 0.3584929296379332, + 0.3675651918135102, + 0.6600563999409946, + -0.005363747481940961, + 0.6530590531827279, + 0.036427675119895475, + 0.1436309088782053, + 0.5416803787643205, + -0.3400980197024867, + 0.5764884335046947, + 0.2904473134550086, + -0.3617570943585085, + -0.3370379714363625, + -0.13394157603378098, + -0.0559244439388949, + 0.42521902457212835, + -0.24194852491277638, + 0.33536575877639485, + -0.288403158585427, + -0.040691492957032394, + 0.4402816779755998, + -0.02862250438357733, + -0.2825557035163188, + -0.16970094837797967, + -0.20282020142212256, + 0.282100375469167, + 0.40559122595433883, + -0.2061011239970558, + -0.3680825117286251, + -0.14888493381104018, + -0.009984721797993867, + 0.2451614227549238, + 0.578933405468833, + -0.34868838626289295, + -0.30156670666852226, + -0.26073682662851533, + -0.35853624619936875, + 0.5983854289288315, + 0.36472036005587394, + -0.18238095234776244, + 0.4671918411347762, + -0.23317799723020474, + 0.5206692331270519, + -0.05193332160669539, + 0.1944925732827656, + 0.2322591231028559, + 0.5374970555680292, + 0.17115469662259986, + 0.08347831100636033, + -0.3622937748773045, + -0.27796258112789946, + -0.319235616037268, + 0.0026081949166855134, + 0.5769066976980437, + 0.16280026343322163, + -0.23469645356031435, + -0.24393540243656628, + 0.34362655549626087, + 0.2539847122504081, + 0.22171699515578747, + -0.042499745606004224, + 0.649803903863679, + 0.34617094649543445, + -0.3125058732472245, + 0.2133643793655794, + 0.08725903521681183, + -0.04444528643623613, + 0.5346939380411345, + 0.16077070578427444, + 0.023017340719697077, + 0.6028801985925173, + 0.622577948186774, + -0.02956895205258231, + -0.2886762929557327, + 0.5171724900947413, + 0.48627085928791947, + 0.4107714102068064, + 0.34887430054733237, + 0.04138241953761346, + -0.3383669743753164, + -0.001415981857402493, + 0.19298223025809746, + -0.04779591921331211, + 0.03407172027041849, + -0.38509038434140536, + 0.08007035252390826, + -0.20030733137776952, + 0.5523207886440736, + -0.2936085077161018, + 0.4868895416894151, + 0.09931461318691381, + 0.522862806690692, + 0.123721746573897, + -0.24711415563410333, + 0.4724102978508594, + -0.26815724900403676, + 0.6669136107638155, + 0.5207529705161384, + 0.34806829524246297, + 0.02809633026171765, + -0.2975040052894078, + -0.14517889091745517, + 0.10419605030576229, + 0.4116205524522366, + 0.4955604134982047, + 0.4733039234522186, + -0.07902292161751234, + 0.5588009581136765, + 0.20310909944413524, + 0.35106449158409414, + -0.17680988595119385, + -0.3311917523752067, + -0.12446269640557367, + -0.28768257854052126, + -0.36456648744768183, + -0.2968721698640424, + 0.10920015102309477, + 0.41688417583374515, + 0.484561386225283, + 0.007374294720740693, + 0.5236327197938454, + -0.11821914928268584, + 0.054326715390865477, + 0.4229077459469617, + 0.1063384431415535, + -0.24929827837180618, + 0.5177193044870426, + 0.19707072926771596, + 0.21920779083895792, + 0.3924942666307555, + -0.19400360109473158, + 0.1351053955870165, + 0.5583637085509675, + -0.08993993658574484, + -0.2758475394781604, + 0.13021359072987082, + -0.25724873612255295, + -0.22230588411881902, + 0.5300908910112142, + -0.33731554941313197, + 0.31365451555759927, + 0.26704636847726626, + 0.6112388407620873, + -0.053004441558967386, + 0.3793039080374093, + -0.08417059669802457, + 0.10005732572061654, + 0.43353540118862477, + -0.08526025946069088, + 0.0441079233283172, + -0.16846551706004873, + -0.23275317826583444, + 0.01829503764850432, + 0.3446110064848218, + 0.27826820074113756, + -0.33563142922047695, + 0.26480368692858136, + 0.5539904202732667, + 0.4699747474669813, + 0.5166994755667016, + 0.092892488699855, + 0.6678014984089892, + 0.4302362604261756, + 0.36136024665008515, + -0.18604639835840173, + -0.04337634278563107, + -0.2087659460256106, + 0.27727675075300584, + 0.5391424005090246, + -0.12970111791582212, + 0.3374744551956047, + 0.1711781766511754, + 0.4927781547968717, + 0.4346128135840823, + -0.2656298631475933, + 0.572525983813508, + -0.19310312640439958, + 0.43091332610075705, + 0.5240304363912869, + -0.06001543488630179, + -0.2900333812361362, + -0.2815917770945972, + 0.35373684006632244, + 0.24633111911723238, + -0.284709146495985, + 0.06641285008596148, + -0.20117178650933454, + 0.6700468626995574, + 0.38620318274262466, + 0.37625730667514257, + 0.4974448783582175, + -0.28873208182136423, + 0.30170530418587804, + -0.3539209893850555, + 0.07107931308134269, + -0.20916055851466134, + 0.3994372528098932, + 0.23068545056816592, + 0.17137506882723186, + -0.22960411167542616, + 0.23381114335760111, + 0.3860833799401958, + 0.08899983371266618, + -0.1679714438100401, + 0.06762920507189268, + -0.3728704000852847, + -0.1022086944299751, + -0.1047861867801877, + -0.015121540976805015, + -0.36069409647767947, + 0.16314625175889186, + 0.4039709056602795, + -0.1417131974016933, + -0.2991149022712807, + 0.004906853025837599, + 0.4696067754133515, + -0.007833200297122866, + 0.06114300475570772, + -0.3093195211920111, + 0.4460759197072576, + 0.21055678544780176, + 0.591657350162516, + 0.6721137041005193, + 0.31386282690059786, + 0.0750169973254376, + 0.6699041250794967, + -0.04928530998647246, + 0.0216115025773419, + 0.46681183842353935, + -0.21946116422079603, + -0.03944771773115824, + -0.175041734846715, + 0.40799711024831253, + -0.3827862844520079, + 0.4839722906782786, + -0.1547626534818411, + 0.5274988142521531, + -0.16135862552327943, + 0.11762011304557707, + 0.49869162497266395, + 0.5564527778495981, + 0.4640898507772705, + -0.0015637306051736743, + -0.06213780359701643, + -0.17681457927174585, + 3.961846204902919E-5, + -0.23007322575843475, + 0.053759047931581594, + 0.6154761034313886, + 0.24448574714122606, + 0.07004396259172913, + 0.6820018729934277, + 0.614663167046336, + 0.22789267809712177, + 0.1880608657636358, + 0.5125965883482262, + 0.4979997499019695, + 0.35393895086319094, + 0.44448971792278125, + -0.042475141265559124, + 0.5562367307950289, + 0.3498636316724645, + 0.2826350192818783, + -0.07163568749204963, + -0.3997359994063637, + -0.277275428308697, + 0.055510595161941734, + 0.6227503099595543, + 0.6716139668617541, + 0.04395779013190926, + -0.3830843645355501, + 0.2876174986163781, + -0.3011153303971205, + -0.16580981553928695, + -0.03665292290184108, + -0.04796741277047584, + 0.4500390808354561, + -0.30627210422115253, + -0.03178935504380198, + 0.30847813282904935, + 0.1052831004221193, + 0.5830031122534807, + -0.2359202705128193, + -0.08956998236185731, + -0.29513657222620465, + 0.09498690883344957, + 0.43788193668147146, + 0.23048746282968569, + -0.12054203698404864, + 0.6682200594430995, + 0.29134199874631017, + -0.04297543756157307, + -0.3240916543194854, + 0.5436946729095739, + 0.6395786252089924, + 0.22127261690963174, + -0.15895803893063526, + 0.27075952059024744, + 0.4210379340985062, + -0.3151109249462234, + 0.5044547356667994, + 0.14325340642745066, + 0.5400429729005196, + -0.2628750593453118, + 0.26281720875935677, + -0.3601212119415758, + -0.09939996725382394, + 0.6760723303743662, + -0.3163842315214105, + 0.21468246344490127, + 0.6749546864787613, + -0.19669159237196646, + -0.14267872413476362, + 0.14816406420944073, + 0.21868188202605043, + 0.4724727200355465, + -0.1227706489569213, + -0.36586659445771214, + 0.5080895869631294, + 0.514494857519356, + 0.41935066480277805, + -0.03790361856503066, + 0.4961164022397536, + -0.06089524731464818, + 0.2881998684060122, + -0.02401555530605526, + 0.5535243960298846, + 0.18234234111026382, + 0.25043699357350335, + 0.1949575256435383, + 0.6387069590077782, + -0.21630339275263052, + -0.16708310226477902, + 0.08017744796276127, + 0.6492697014145562, + 0.08231641678132806, + 0.29256065920853425, + 0.18602341659866817, + -0.040540847847441164, + 0.12212031075882379, + 0.4705200949210261, + -0.17039497538239246, + -0.33602110315027023, + 0.3941312329872756, + 0.19549513251828998, + 0.2328821642229021, + -0.09622822025531125, + 0.3451323055662393, + 0.3133001866273798, + 0.29387816266657185, + -0.2354977032949067, + 0.05729646727881099, + 0.2018892563583785, + 0.6795039307007925, + 0.13482623315215003, + -0.18274488514111914, + -0.37548382101208605, + -0.15236522265012373, + -0.14062833298849414, + -0.31493991896185514, + 0.1695964475581796, + 0.3463026449773533, + 0.5152547526706555, + 0.4668619178192148, + -0.26101932492322755, + 0.246815238164509, + 0.10943775973102265, + 0.2675910662364488, + 0.22764839268996373, + 0.4905802418805776, + 0.5805130708392398, + 0.30028930667894627, + 0.46962200166304735, + 0.5136570146310504, + 0.0867445613807118, + -0.36568763885826333, + 0.6819494409989725, + 0.22055354389507853, + 0.39725780694688795, + 0.4568068481815514, + 0.26482496496090946, + -0.3179420787238812, + -0.31152876704633786, + -0.3665463199499585, + -0.07271980755667429, + -0.13332273067132416, + 0.6052614438686569, + 0.5102740158655084, + 0.39212581448607353, + -0.07011457285877243, + 0.6821529725696512, + -0.22590730568553197, + -0.2890075024296509, + -0.11891244285016045, + -0.028038368010971926, + 0.08980923693449389, + 0.10986339313348514, + -0.21200962105278875, + 0.5579923830855625, + 0.08749929065522472, + -0.14005141980503572, + -0.3236254331787233, + -0.30473619179830413, + 0.6084059678568149, + 0.6565515662249589, + -0.07037722192864293, + -0.18832940591600308, + 0.3671097762834805, + 0.3128112253758051, + 0.15673983229699262, + 0.5317356786058139, + 0.11785174791670039, + 0.33640405661498707, + 0.2518749996837294, + 0.4848461698325922, + -0.31211907617507006, + 0.24452974590487353, + 0.4417515837528754, + 0.4552254543617523, + 0.1451762057116046, + 0.07480199259599862, + -0.17900550552182798, + -0.3081454587792817, + 0.24709593653794715, + 0.0032771602678058342, + 0.6225185400379575, + 0.20712870605593436, + 0.6795023568720678, + 0.4546511638525137, + -0.2292854943124712, + 0.41191686503953373, + -0.1574999798975972, + 0.29828605835913, + 0.37106981435834496, + 0.4353433274811078, + -0.04998292183865077, + 0.006855791746175566, + 0.22527159266430952, + 0.6081882160702964, + 0.4947418731525337, + 0.2023698107484847, + 0.6678143274972922, + -0.11566280895428716, + -0.19404135789323054, + -0.36592420039794643, + 0.13947413641645467, + 0.3819710613894076, + 0.41418728790120474, + 0.09370419990843676, + -0.16633092917685915, + -0.28916774060413175, + 0.6450592586637504, + 0.4407210135092705, + -0.20150463714648567, + 0.285289083936215, + 0.6635651714180285, + -0.3513512579850334, + -0.009734729626807048, + 0.08052742470671781, + -0.009330541283874116, + -0.25664062614424693, + -0.34157740784092316, + -0.14313028233494102, + -0.23050942171968644, + -0.3568681262404364, + -0.04343406123051746, + -0.06593583715713042, + -0.25406344934690395, + -0.3009681123305135, + -0.19016618431152404, + -0.23337153414554265, + -0.2952904400209858, + -0.307600054923524, + -0.3410440044358555, + -0.22584383602556474, + -0.33304894316089406, + -0.015557917441465396, + -0.3755010354240651, + 0.009698498036414649, + -0.03937270831301526, + 0.07738092625633158, + -0.09229145212678708, + -0.36130896525541856, + -0.22816848239385717, + -0.1642228012912292, + -0.08394551692436641, + -0.03638528037727551, + -0.27489486756914505, + -0.09785036982783901, + 0.11789981357356183, + 0.09701597632196302, + -0.009842550506290904, + 0.1258378705855261, + -0.30786032193680013, + -0.15086767198204018, + 0.03220869986131658, + -0.2698669332577102, + -0.24296179916418623, + 0.04161073827247819, + -0.21805409239499574, + 0.10211575931650763, + -0.27212852419500694, + 0.12463161447861293, + -0.08770691507000733, + -0.19204523810430893, + -0.2233125284447549, + -0.32393094213893964, + -0.09507397667807149, + -0.2081844633585609, + -0.05523270998920038, + -0.04069328371042186, + -0.3905757684203585, + -0.19226541137605738, + -0.3208139305902831, + -0.3079950062903219, + -0.061652081078608145, + -0.06418904461969666, + 0.02743017372340767, + -0.07468850362492441, + 0.06350944601041131, + -0.3749164938904359, + -0.29282275950088227, + -0.16624280717198459, + -0.16193294648171477, + 0.1039737937477565, + 0.10661532708059185, + -0.36213899373469927, + -0.22841099706943924, + -0.13884988097832118, + -0.1501148153750639, + -0.3080762381246741, + -0.07676233393145299, + -0.04572554871998158, + -0.2154866858947949, + -0.15846019850680948, + -0.0708094974542341, + 0.14119434876711356, + -0.03180813129550292, + -0.21869841069333273, + -0.3515817892425766, + -0.35725797826395544, + -0.2672508155669974, + -0.013316726973279291, + -0.3754057769010233, + -0.3483590311036638, + -0.23256730889515426, + -0.375645522891698, + -0.24512516774583917, + -0.3860702023798642, + -0.001400339140586182, + 0.045310972933552796, + -0.19437020894800922, + -0.15105780214081804, + -0.036779238398542746, + -0.0313886437565562, + -0.1803716358377623, + -0.05056733234604516, + -0.37361879821933913, + 0.13954960500456448, + -0.2714084780931347, + -0.06576152640739558, + -0.18742601336473866, + -0.2833509514086178, + -0.24377737987803377, + -0.17999698841716855, + -0.07718186560833096, + 0.01799220072004276, + -0.1368837490578984, + -0.15429939989026967, + -0.1206705680787627, + -0.20374739468532263, + -0.08960211599533646, + -0.025150794020565526, + -0.1371586948286368, + 0.14110157528891754, + 0.04313237341510939, + 0.07441957060659088, + 0.09843596446148672, + -0.021381724261349377, + 0.12990037325287684, + -0.3254818112262219, + -0.01585053043355089, + -0.05078550678890592, + -0.11335699096287888, + -0.320376190875746, + -0.20925162272676448, + 0.11647102000035403, + -0.3845343414571074, + -0.03241539604291882, + -0.37605360087164635, + -0.13158872866069776, + -0.15305856152121047, + 0.029498269946418187, + 0.10167452325068127, + -0.23458511965509624, + -0.38077449618042325, + -0.2920249604596945, + -0.07109597519874572, + -0.09958870160740163, + 0.05373180643561898, + -0.2916331945461399, + -0.3140845520904458, + -0.1940929771071691, + 0.06306713180632789, + 0.06020223859378643, + -0.07184509051284371, + -0.11082377051659809, + 0.14824310198776514, + 0.06591945585019987, + -0.3218286338341107, + -0.34322879026783226, + -0.2924596022228677, + 0.02886737594150579, + -0.21767147482190086, + -0.22820921433788796, + 0.09344457910559767, + -0.2271362649481167, + -0.1201935652469413, + -0.16284691505485416, + 0.08999509572974662, + -0.07272342505460788, + 0.0593028009315012, + -0.3417833039161612, + 0.008714527726037424, + -0.2091907936670941, + -0.3911956586206732, + 0.09468834603404708, + -0.23864639044449104, + -0.15617006064196437, + 0.14163978043651448, + -0.12869832019152366, + -0.32927307147201007, + -0.25831383878451936, + -0.23507883396542512, + -0.2510293053176314, + -0.1498584270763082, + -0.3554517365232802, + -0.23586685721509748, + -0.005820995014750918, + -0.33430545277772394, + -0.09809194206519967, + -0.3215260400182086, + 0.06333191006219252, + -0.2356375232039473, + -0.38665348210307066, + -0.3840800008571111, + -0.2950803616456345, + 0.09760946177998059, + -0.36451721674050297, + 0.11802614197976657, + 0.12476742594022061, + -0.3071413435922187, + -0.31804061568312864, + -0.18454718198077089, + -0.20385651880118946, + -0.0746756213982342, + -0.3802130025884744, + -0.08380734443659166, + -0.013610226437624384, + -0.011155265979860995, + -0.304008854840458, + -0.08249776096799638, + -0.13638659199283676, + -0.11965409037905422, + -0.2530241243504219, + -0.36576093226600814, + -0.17598350303319737, + -0.18886127589776014, + -0.2632996309796942, + -0.21291112775519955, + -0.05419858618804463, + 0.090206803432613, + 0.05946757291261423, + -0.13450234873984968, + 0.07435615191327555, + -0.3218264412858729, + -0.0700715223782391, + -0.1144740027760146, + -0.19512577611139403, + -0.15876077082155196, + 0.06956882726858926, + 0.0816076394533295, + -0.37021901317465544, + -0.009654351575266007, + -0.04131645811499146, + -0.02445048275691647, + -0.08340268628090236, + -0.04565136323367169, + -0.03904795951901846, + 0.08485409024383944, + -0.3603340422464829, + -0.3568500058428221, + 0.05278929794742854, + -0.1596367250315796, + -0.297471223742482, + -0.09676041573086064, + -0.21638358805460436, + -0.39886923960837495, + -0.35505520401265334, + -0.06280990895481897, + -0.22467705691709197, + 0.10641530527178422, + -0.03620514181666479, + -0.08567526078825838, + -0.19504571954775374, + -0.01992903684423275, + -0.2214489893474725, + -0.3487331616986315, + 0.06045575543907172, + -0.058142333804468704, + -0.20049760801988478, + -0.04050807592959388, + 0.1251919215977868, + -0.2309512404842129, + -0.0062978714965858384, + -0.33174969741737337, + -0.06980812102798506, + 0.07913024739631286, + -0.07128240160879756, + 0.10766089260382428, + 0.13111666398456046, + 0.009181272071221547, + -0.29748839796660875, + -0.1653223937529884, + 0.10766952239094585, + -0.05836856603892132, + -0.02635074900969553, + 0.029870520874065554, + -0.3656502925893865, + -0.19582706566651703, + 0.030288937622913237, + -0.08868175332862438, + 0.0347841998756202, + -0.3581234111012665, + -0.367701810404299, + -0.36181281005505433, + -0.01251133219133338, + 0.0035272213804031782, + -0.3000877011610621, + -0.28452127470464716, + 0.005886822949095871, + 0.14626252365479087, + 0.00415608235457221, + -0.18227518028541143, + 0.00237217103690196, + -0.3216416124634055, + -4.4703627620790165E-4, + -0.34221354227612855, + -0.19729691550186307, + -0.24728878065456453, + -0.059375337216053536, + -0.11136964075095768, + 0.13174344537039173, + 0.09755239825538448, + -0.1263829561283284, + -0.19914246290830823, + -0.08516341871752126, + -0.09150428728905008, + -0.2164423914045247, + -0.2321055848019958, + -0.304407061056625, + 0.12490366974244793, + -0.1786863328179365, + -0.08211048890713041, + -0.2517308273334066, + -0.0012730107309130712, + -0.17582622940066164, + -0.2830734529803968, + -0.1626197054393973, + -0.09818373074677222, + 0.09363135210540319, + -0.004517732309542277, + -0.060410915338940885, + 0.13856605690116375, + -0.11931405822220198, + -0.01836761694162209, + -0.2777696163562133, + -0.3236894535041825, + -0.33915102661408353, + 0.12226147112863595, + -0.20292359894153492, + 0.12665280480448093, + 0.0894169418710144, + 0.1290578995619056, + -0.3609068800040676, + -0.24830008267562734, + 0.09683515139206439, + -0.012629771793401634, + -0.10492155597861691, + -0.15216752994397753, + -0.38662617010340766, + -0.10006259854735045, + -0.2995053473109294, + -0.34361510111829385, + -0.05164792206115587, + -0.15806779121025166, + -0.28315288938507754, + -0.3038437394352643, + -0.028376741422662277, + 0.0960213782328766, + -0.20708303838448625, + -0.27019412618134137, + -0.3335794951050944, + -0.09948589561341298, + -0.16700323854289756, + 0.10793936233264956, + -0.3716108029678804, + -0.21603224015337028, + -0.04169038183962415, + -0.12836567259502052, + 0.00931324842847675, + -0.2648109248191536, + -0.2616109998532822, + 0.0762457860214944, + -0.11859242995974262, + -0.24198486353224785, + -0.1177838588172559, + 0.04189766063737277, + -0.25210164006541014, + -0.11933656280958505, + 9.612305231878615E-4, + -0.14294142590863063, + -0.3104581069983772, + -0.11637091066926991, + -0.1622246045719802, + -0.11869598328092346, + -0.01414807828117659, + 0.11556061216758062, + 0.13522911833629436, + -0.3442627304295064, + -0.1916864866857944, + 0.1018225124942922, + -0.2603657832040541, + -0.00392449646797105, + 0.03652834714792258, + -0.10754944167537367, + -0.3670882338370339, + -0.319380092545237, + -0.0614382763216717, + 0.09689795392028167, + -0.23143728028799018, + -0.3776602886170574, + 0.04776683418458705, + -0.3087145777696926, + 0.12776366412892637, + -0.368760825957009, + -0.031629282952340354, + -0.31064143463802374, + 0.08644769402839175, + 0.08154175292685728, + -0.0699918575764702, + 0.042203330775386405, + -0.16496532675585732, + -0.09923037259150558, + -0.36918280608099485, + 0.04968535511336469, + -0.0947907377208504, + -0.340944724172196, + -0.31298318335417996, + -0.2944471921380477, + -0.27686930426322565, + -0.22473707417779018, + -0.03323582553746901, + -0.04563170984654019, + -0.07551708407214763, + -0.3013496422829016, + -0.2047247247119197, + -0.2200367655054311, + -0.03623928972527246, + 0.06310553967150101, + 0.14240116936858171, + -0.013124965864777072, + -0.057407549595690555, + -0.22351548859232342, + -0.35726469519923965, + -0.326665968027854, + -0.3856829005111819, + -0.13861579921402434, + -0.37544899376670265, + -0.25691148953642723, + -0.15163723021904535, + -0.250095390474172, + -0.3036396051054132, + 0.07195003347325957, + -0.007490423011273339, + -0.20909022119204226, + 0.048743573589925315, + -0.09782686016875575, + -0.03835800300109343, + -0.21529844402130063, + -0.10029557728177424, + 0.13842485998306808, + -0.17588170215809845, + 0.025221747542349626, + -0.2760480905623021, + 0.13071944823504977, + 0.033553546164282855, + 0.0848818557137132, + -0.17111892584028762, + -0.2174564780442809, + -0.19089065560055415, + -0.2464082597085413, + -0.2844199760032776, + -0.34516406574764835, + -0.0594210720818516, + 0.01158354997154043, + -0.2228321594630035, + -0.2692809333820011, + -0.25481949021560285, + -0.33425026932817226, + -0.22276948798508037, + -0.14118415765630615, + -0.38020459191562245, + -0.19572875940882498, + 0.0077304020913813165, + -0.0903717120261246, + 0.06307888352181068, + 0.11708901905541791, + -0.14091330772180938, + -0.27172335130212755, + -0.257169584595362, + -0.10857445832654844, + -0.3544605983615056, + -0.10654504820692168, + -0.013249646341022991, + -0.09848169563464809, + -0.14916592353964397, + 0.03256080404274608, + -0.2038182888891027, + -0.3686685496404891, + 0.06910443010304163, + -0.30842332499656067, + -0.3144080837903868, + -0.34205103124624914, + 0.12103154216127177, + -0.09271611548244973, + 0.06210531976183037, + 0.03556818697307368, + -0.2358670780702004, + -0.20293787283544318, + -0.2085777880394763, + -0.37801568066424013, + -0.3229188640843085, + -0.29839554203473084, + -0.1788821146516375, + -0.11041887354736418, + 0.11143144549730921, + -0.10746217907778155, + 0.07774433886143833, + -0.22691116062575167, + -0.00805204239332108, + -0.005744662882244678, + -0.03006843740880283, + -0.31108415430337005, + -0.3433889892590601, + 0.08815141974292384, + 0.016182047039700942, + -0.11949728047218039, + 0.060309081420795, + -0.0329542437278032, + -0.17453660195893334, + -0.17290778475780308, + -0.37164173086719887, + -0.1909903762249377, + 0.04465397854586106, + 0.042651135687689856, + -0.3554188208595119, + 0.04847349229794895, + -0.013939978705131695, + -0.38590532033328645, + -0.36692702024224716, + -0.04330975177932661, + -0.0013972193329707117, + -0.1271231534819997, + -0.18918616609223707, + -0.24323427683280732, + 0.00396516654089063, + 0.007528847770099878, + 0.14787609693514803, + -0.10296074535058153, + -0.3685600100400799, + -0.06766291305478539, + -0.33564345907525844, + 0.010798592121962325, + -0.0854875569776708, + -0.3995499535322787, + -0.0477721440276524, + -0.21666356817913227, + -0.12754360158929745, + -0.3888824913030268, + -0.13041224573955845, + -0.3862938242310157, + -0.3984332697389422, + -0.30003548225143584, + 0.04090546780804977, + -0.2960715503550975, + 0.13508937283174627, + -0.2441364604527979, + -0.30837651844528696, + -0.05908990006418985, + 0.023031085563601228, + 0.11537178652894553, + -0.016854637103667247, + -0.08133983596169952, + -0.2633657743553448, + 0.1346070957310358, + -0.28553672654897977, + -0.1416942953790542, + 0.028774787381247446, + 0.019399503586071953, + -0.2029560494840044, + -0.17818071316938816, + -3.769230461240225E-4, + -0.026780344798254363, + -0.31688496318945714, + -0.0914160768986797, + -0.30995744750233056, + -0.10945055783719565, + -0.030994140608908705, + -0.2722729371006518, + 0.09811675475117765, + -0.25336733747372786, + -0.3837181040313048, + 0.022772681167910924, + -0.05362370690801943, + -0.3879761255618494, + 0.14225243685979572, + -0.2495226608576374, + 0.07437216877402064, + -0.3918570739890528, + -0.3312784960171862, + -0.05031257808423273, + -0.3488097365202535, + -0.15944277093323517, + -0.39385729843209133, + -0.1252702275140164, + -0.20165235265400258, + -0.12195613941897532, + -0.043189106850897885, + 0.005565387863875504, + -0.054203769115794, + -0.34879417942153856, + -0.1351210503129343, + -0.26547728158059236, + 0.023419909179857756, + -0.1163857586296686, + 0.0036998156174414265, + 0.0847659385484319, + 0.07252717426390098, + -0.19398163638878113, + 0.050286810680968685, + -0.01811553504348512, + 0.011345372987039137, + 0.06566725540342, + -0.15164502573725053, + -0.1133648890255356, + 0.04356555464344525, + -0.2847390352396056, + -0.13706248778024466, + -0.05560659674780305, + -0.1690596754941748, + 0.035661571759571964, + 0.29616568741486293, + 0.1645542871628964, + 0.37264486159297716, + 0.36332794920576983, + 0.38375917422805605, + 0.21043950051945567, + 0.21567983799685186, + 0.16996154407598607, + 0.38047953255714806, + 0.3277884384052842, + 0.15807258604930927, + 0.27970392944796496, + 0.19191342938104056, + 0.3858936814305683, + 0.3833298279297457, + 0.27024037341409823, + 0.1692155473640982, + 0.16102348983493162, + 0.3490311550084596, + 0.256924747768988, + 0.22013449441629226, + 0.32936615259006563, + 0.3630667725697283, + 0.23575643523821782, + 0.24450526182503568, + 0.2760012061314161, + 0.2554440712503438, + 0.2509963433712131, + 0.1955671769644511, + 0.30519996527501575, + 0.3550736611769427, + 0.3216077932705956, + 0.25054218733198896, + 0.2972922546967175, + 0.2723840320393198, + 0.20169608260621272, + 0.3232818510495249, + 0.3632539368822537, + 0.21027814282246401, + 0.39080882580891985, + 0.2475729293836732, + 0.21052884380664855, + 0.27295724911004726, + 0.38117436569433394, + 0.17890587219298226, + 0.1803631456102814, + 0.38429637069338185, + 0.3662052854827318, + 0.169846081141677, + 0.3658572422223505, + 0.2933531490975376, + 0.34175515197323514, + 0.18280082704126274, + 0.20272226151136552, + 0.31761189408368795, + 0.3236029026677476, + 0.23976176847836508, + 0.2600782924816438, + 0.20518327503258246, + 0.2738330982189126, + 0.21295218300386462, + 0.3397929482219494, + 0.33491550579426216, + 0.19352185401111288, + 0.3242478282286748, + 0.39252354825772706, + 0.31449823184261577, + 0.282674255191514, + 0.3059903534761985, + 0.2477921389998624, + 0.34433526871445186, + 0.3736023284979839, + 0.19422037045972457, + 0.3901453387604304, + 0.3097616977866708, + 0.34122549096900223, + 0.2226042233986359, + 0.21366448547485492, + 0.21175572726190664, + 0.38740407208446437, + 0.2856439619632538, + 0.2654478305107489, + 0.2403767410612621, + 0.21847636387295863, + 0.19874764399479486, + 0.3376055893962727, + 0.37397372822370945, + 0.3707814505190358, + 0.2522627199134411, + 0.18385463895104207, + 0.35493830343281946, + 0.27313114371784125, + 0.2463695278853461, + 0.16698370727755033, + 0.21029806442831117, + 0.3515234987671986, + 0.20624275022400046, + 0.20176646029530043, + 0.32490954273607253, + 0.19038176201538232, + 0.30212022091517987, + 0.16114093911743652, + 0.3835552558582984, + 0.23540047279888968, + 0.39235079830926445, + 0.3773212386353935, + 0.3251969999319716, + 0.21587967975613512, + 0.16625363176431002, + 0.31136716984099155, + 0.2159117435221703, + 0.2793695567986849, + 0.24516198235813347, + 0.15667939662214825, + 0.18829414899412147, + 0.2751869638477742, + 0.3312110821763069, + 0.37727386524505613, + 0.21144791292422735, + 0.22738869874548023, + 0.36753995628929326, + 0.26620804034116996, + 0.24472705820961277, + 0.24020050501241294, + 0.24683460475864122, + 0.3560655874475111, + 0.18543621269541913, + 0.20087207606278745, + 0.3094830255070392, + 0.17527007697273717, + 0.37273891475775844, + 0.25228630883030734, + 0.3416920703671974, + 0.33662566379352055, + 0.20598733574947417, + 0.31765998598151235, + 0.2370189176917878, + 0.3404915688632575, + 0.1710747406349181, + 0.38995169297166954, + 0.18730905449695467, + 0.3407283148082756, + 0.3594835087921161, + 0.37993545421217234, + 0.24526625059667476, + 0.2980193725379807, + 0.3889534982018328, + 0.3920148898854444, + 0.28859061892507243, + 0.33022046064015886, + 0.22541417279242887, + 0.26413670417544327, + 0.2997057069197012, + 0.2966505148372524, + 0.2935180919368144, + 0.2215696086265114, + 0.36704665197004926, + 0.2966349674826395, + 0.2815813616722743, + 0.3077735846668578, + 0.32706279788349435, + 0.20680790752379546, + 0.20068323372519736, + 0.2616775382670411, + 0.30969277954621915, + 0.29178244867584346, + 0.3277707774686916, + 0.2798287621099004, + 0.3838456653160788, + 0.31651828650818986, + 0.3801900870131813, + 0.18448609863602908, + 0.3389454251362397, + 0.3496484936559188, + 0.3825532619680926, + 0.17593888587464482, + 0.23289442358545834, + 0.3267316015188119, + 0.3162950214599499, + 0.18430496733734125, + 0.20538194152943123, + 0.3676523397210526, + 0.23564876840491206, + 0.2581999752429913, + 0.2521569803834402, + 0.2331870014957202, + 0.3664493267866006, + 0.19146120101266956, + 0.31481085125317076, + 0.37627092019536945, + 0.2358728681238741, + 0.3028401110902007, + 0.2252646242629657, + 0.21212732612857194, + 0.16343391251333386, + 0.195251299740965, + 0.3132386753295749, + 0.29009069023514245, + 0.2550971527728266, + 0.2214479928905983, + 0.35390390665295596, + 0.30739500814908205, + 0.38690038217829414, + 0.3273792552175777, + 0.17746479928502046, + 0.2605282459880335, + 0.1834777657809768, + 0.3727180610455038, + 0.16423818959869024, + 0.359925225139366, + 0.21649578785557844, + 0.18609012197312128, + 0.3315012538723582, + 0.3387318651231735, + 0.18630242497243593, + 0.19323404501091487, + 0.32664266468733966, + 0.3179522067057027, + 0.217350702532964, + 0.2127918611471863, + 0.32875331812392306, + 0.3876778528421391, + 0.30476802416169274, + 0.18944962386261507, + 0.19987477097536568, + 0.2726619540051436, + 0.17263424663236498, + 0.33234024870711754, + 0.2107051380401433, + 0.292586728750985, + 0.3043423103671571, + 0.17878956486050956, + 0.2713525089831143, + 0.339511630768631, + 0.32124502070527183, + 0.2950124970204042, + 0.2805472181613006, + 0.3131342024727114, + 0.31145936728730395, + 0.33552821790384374, + 0.2802137029956411, + 0.28491968868474477, + 0.30626289959540076, + 0.3494655737802703, + 0.17863711271344943, + 0.3843688282714659, + 0.3180904534852057, + 0.2242993973608945, + 0.23917270005758678, + 0.28926733946876504, + 0.256018915482666, + 0.17913096721499755, + 0.2857769974036177, + 0.19071514584614307, + 0.36603389531278685, + 0.2840618262146498, + 0.37212061718157086, + 0.19589423182026272, + 0.29478784060909985, + 0.37817507069071665, + 0.25007490915931796, + 0.3770141233205814, + 0.25998019839701586, + 0.16274364953681067, + 0.21213262931983645, + 0.3913107282980776, + 0.30414072701468253, + 0.32461128138554896, + 0.23350463890490997, + 0.356852751164873, + 0.300187646876211, + 0.27353470098722976, + 0.16297850741099876, + 0.22503755316492552, + 0.1957284927215688, + 0.34755366046996705, + 0.38489029784700135, + 0.1932039994417193, + 0.37593766135964557, + 0.29244048403267947, + 0.29610776191628974, + 0.23961270796315784, + 0.37953797713566395, + 0.22097335092166726, + 0.1923377876797412, + 0.33886239502353116, + 0.33592750457500026, + 0.17091570683381263, + 0.1859270419999791, + 0.31986523383256826, + 0.305025656149335, + 0.17928053145475079, + 0.3329659519548833, + 0.23487210891465676, + 0.16419836119032688, + 0.3361396001255963, + 0.30580459500919566, + 0.30460716924327336, + 0.2641823483483075, + 0.36681286831769644, + 0.1588350335669442, + 0.3880810032933709, + 0.38647724923141236, + 0.16631184495621193, + 0.29805591160128253, + 0.3126366502416571, + 0.20695914741588745, + 0.37537746935311644, + 0.2376173300885236, + 0.343796218730488, + 0.19929205906648034, + 0.24861337430194858, + 0.3690606499885255, + 0.35374725621674463, + 0.37993757631201264, + 0.2768027216540898, + 0.2951695286525954, + 0.28908981199278294, + 0.21737632107124666, + 0.17281956309364885, + 0.3797763526880752, + 0.3446849114587546, + 0.22777485928234076, + 0.38089340684608153, + 0.15818600970112778, + 0.2713707377636015, + 0.35277282685349165, + 0.1584294244095367, + 0.18777117978546165, + 0.3594291941026477, + 0.3080445884797415, + 0.17764097773784213, + 0.2734852642297877, + 0.1649226792315333, + 0.24635755543889784, + 0.25957379064450126, + 0.2308889558068855, + 0.33763902896776965, + 0.21942446639227026, + 0.29803127026648535, + 0.2174705247545899, + 0.3690182662790866, + 0.19862329486590802, + 0.2752979963754169, + 0.19720358923360334, + 0.31038298834234457, + 0.2968004646710033, + 0.3517016857812053, + 0.34384174746901414, + 0.21511409794536993, + 0.26331320034008654, + 0.20726178820425747, + 0.37132585877814134, + 0.21111793411774252, + 0.3421359981769855, + 0.2800918652594643, + 0.21184494101249554, + 0.36454866040090766, + 0.24695954075311874, + 0.35775399022445653, + 0.23192239602376108, + 0.2491237696072448, + 0.24368492117665785, + 0.17337551623990785, + 0.3659245209385756, + 0.16730283279905123, + 0.19469740046206624, + 0.16332393623148242, + 0.34986194619781585, + 0.3584467617949286, + 0.2967242628269211, + 0.2779330362923675, + 0.31344571366956153, + 0.3234907856679011, + 0.35087964459603854, + 0.2843975355026477, + 0.23466530943952602, + 0.1738781916496543, + 0.26792620933441214, + 0.19541397976217845, + 0.3013386245897083, + 0.2661226399872765, + 0.15835154870887191, + 0.23972461538721537, + 0.29060599638743145, + 0.3170191683649488, + 0.36106149550564914, + 0.38556676887271246, + 0.1839153204334728, + 0.2463294905619597, + 0.2646936356351327, + 0.20048607600178692, + 0.32677321474452886, + 0.33361428708625085, + 0.370796803888926, + 0.22156979779637231, + 0.26633875128038664, + 0.2888101942764882, + 0.1991646248500692, + 0.37725122053885296, + 0.34887877181224664, + 0.31206902717750534, + 0.3035601602682384, + 0.15996084493785623, + 0.3762316032813641, + 0.29948946959274303, + 0.3328602625151591, + 0.19760211079266804, + 0.18372593243040586, + 0.34422694816418453, + 0.3756315048246147, + 0.17297186382378035, + 0.27825085708936925, + 0.32973280729225884, + 0.2261768773207044, + 0.20117786942176202, + 0.28278234056464135, + 0.29501317025614887, + 0.20469101979446666, + 0.281926317953884, + 0.21803954195078032, + 0.37977109865406034, + 0.18468656934880076, + 0.16435512774068525, + 0.24596030956490347, + 0.35069933510631324, + 0.2098982910469682, + 0.24103664986998322, + 0.31539285308085196, + 0.21273874915215346, + 0.22128466290790244, + 0.23555928548812038, + 0.2135668129995259, + 0.1698394907138801, + 0.33434242929324853, + 0.15828316527847147, + 0.1991373829371532, + 0.31787319299775973, + 0.3010572441208954, + 0.2483106524260572, + 0.20421808718420278, + 0.3350445704329006, + 0.19668814464475376, + 0.37118343070002424, + 0.2215395378724142, + 0.3146504924147388, + 0.24452238265809245, + 0.23359988851148022, + 0.17283197702540817, + 0.16230803349528847, + 0.29467388981014825, + 0.3608419690354765, + 0.17655230225966653, + 0.20946711421706393, + 0.38744840855021223, + 0.24012218762100318, + 0.34555345829800543, + 0.19118696031285742, + 0.27709171060277443, + 0.2858615490535372, + 0.2846067347262282, + 0.2401287976971193, + 0.2971118971460971, + 0.2882213470880477, + 0.17903749782978226, + 0.25096185175281605, + 0.22580810489426725, + 0.2226872587638454, + 0.3517789159480434, + 0.2015169149703778, + 0.16341989582680178, + 0.37468848660015985, + 0.19044831562496303, + 0.37569407870635585, + 0.2374592143649633, + 0.2980182563242627, + 0.20050344398925832, + 0.224904524032989, + 0.1861634025497832, + 0.33262519077111063, + 0.37556902895390154, + 0.2921141812678921, + 0.3228701767156479, + 0.16907429694322457, + 0.3846140822027396, + 0.2710735383351893, + 0.3536925234567813, + 0.2226078268746438, + 0.19128552242071944, + 0.3448535628725082, + 0.23523193566514083, + 0.34660857438411763, + 0.2359007815270328, + 0.21051514110927128, + 0.3427257631937208, + 0.2346950619755881, + 0.2934207390698601, + 0.22685991496011507, + 0.280960734374733, + 0.31537034415846166, + 0.18899048510848504, + 0.3805207821357939, + 0.37703311845654786, + 0.16900066843097375, + 0.2762958729039738, + 0.20768845351485865, + 0.22340387808378603, + 0.230879673925052, + 0.18503126764282318, + 0.292212318291564, + 0.38340601146484066, + 0.23714557713054243, + 0.2948706518656474, + 0.2183868214196822, + 0.24575097045061933, + 0.37933021718524373, + 0.3729808471749165, + 0.33984486305069644, + 0.354416766685973, + 0.2829933892890049, + 0.3639761606945471, + 0.35376526478513437, + 0.17027609588345585, + 0.18963858504005748, + 0.18569905755894164, + 0.3651739383858198, + 0.18515737459688242, + 0.2062534646432443, + 0.252801107244953, + 0.33492405918114326, + 0.23966166239357703, + 0.34784961099929523, + 0.3051895441075504, + 0.18548176701391883, + 0.1972311919133467, + 0.22860902684656167, + 0.20966745856821498, + 0.3178842275228416, + 0.23249671795142143, + 0.24340639059322516, + 0.3564863959710727, + 0.35294243350600585, + 0.36158220259885204, + 0.3093413866648653, + 0.3762968486277721, + 0.2302150251788494, + 0.16096824129217513, + 0.36376579120007424, + 0.19258335380098646, + 0.19088181731667042, + 0.2636424110053458, + 0.18466452880250617, + 0.3779875255734906, + 0.32070348398964504, + 0.27935087451397855, + 0.3562486135275075, + 0.21411713371895105, + 0.3285415661349516, + 0.19175502486077678, + 0.3626096693810305, + 0.3577746797083963, + 0.2841800161056245, + 0.3762773613523887, + 0.21946677196135828, + 0.39165768589143246, + 0.37869201389639173, + 0.18098716086021477, + 0.3554101107925791, + 0.374965618499459, + 0.375404078538109, + 0.32350153031291184, + 0.3032763580571216, + 0.17577142093990097, + 0.24842716159127867, + 0.37823815955390505, + 0.1948636388149231, + 0.21314152200099945, + 0.18487470313440607, + 0.31410269594820484, + 0.3329410122232993, + 0.30865807988774463, + 0.36989111006562425, + 0.25551541984375264, + 0.3822171144032711, + 0.3664358950866924, + 0.1619407254369991, + 0.3241773771491906, + 0.24114277571956005, + 0.2156398009182514, + 0.2824182325483434, + 0.3032818195263487, + 0.36692367112503266, + 0.20997105544242906, + 0.2734668140189386, + 0.25430992517779305, + 0.3263936345770305, + 0.26773279246309467, + 0.2803660850756614, + 0.36354596112874243, + 0.3072604572007198, + 0.322675602448213, + 0.36741903448028124, + 0.1615605464282488, + 0.2927764554008173, + 0.22402687853933503, + 0.2422674184918955, + 0.2424914762645604, + 0.21392969064698622, + 0.36187078730722466, + 0.26562169594680507, + 0.3066575884795266, + 0.2985435368773129, + 0.2887000935315549, + 0.3408927109360206, + 0.20846292892966586, + 0.3237706283644258, + 0.1812709317502118, + 0.25422778027181064, + 0.33520864974128806, + 0.3086834347447752, + 0.29330309822128364, + 0.23285907255661198, + 0.35996853144933516, + 0.22023469502901016, + 0.31853331612880553, + 0.2235415477606681, + 0.37906034050838555, + 0.19623695596425847, + 0.22507433411268524, + 0.19108921952330624, + 0.39237908340265093, + 0.16789461271108128, + 0.20537613205502517, + 0.3862378059020446, + 0.22257798978421134, + 0.3223262982955477, + 0.39221857218873324, + 0.3144460132429528, + 0.32528219326624164, + 0.38932365900598853, + 0.24850793189923584, + 0.2503890827979727, + 0.3868049358048271, + 0.2960233057881373, + 0.19593319669974435, + 0.22166994360672526, + 0.2904754177354803, + 0.24548257817723362, + 0.31185165738368587, + 0.24736596947901626, + 0.3681679634886751, + 0.37842275587967167, + 0.2204324873618162, + 0.38243850898025755, + 0.27785597199680423, + 0.26007050945584675, + 0.30313512935941406, + 0.17829211501960063, + 0.23788182328217478, + 0.24385882256296454, + 0.37311958114030924, + 0.3363875272700515, + 0.1806679362339836, + 0.26430410465879883, + 0.1883834350110381, + 0.24066657057224297, + 0.16794315769186582, + 0.2769127716532671, + 0.168053304845741, + 0.24600337900862634, + 0.2196171149745072, + 0.3548968824220664, + 0.3172588966732911, + 0.30671305801416693, + 0.28243801873393304, + 0.2264056474925363, + 0.351514263620501, + 0.3589680074366708, + 0.20603565090537862, + 0.227858380371468, + 0.34055181385285954, + 0.27318691220183317, + 0.33300004850460874, + 0.36852465623716346, + 0.31993006578732797, + 0.3761424761083917, + 0.3292891150493672, + 0.37042813298567556, + 0.3440020566705245, + 0.2904137463456022, + 0.28567872125604726, + 0.25480174375465675, + 0.21303375017074808, + 0.24442751930943002, + 0.33369856171596773, + 0.3606923133818952, + 0.20915950047472842, + 0.3758345565843514, + 0.1925357982078599, + 0.25650005860089703, + 0.365618550098068, + 0.2920388044154394, + 0.18808813765696425, + 0.30240759188870114, + 0.3413446789327411, + 0.385607392604563, + 0.24070143871341892, + 0.3190320476923229, + 0.23376029334353043, + 0.31398133181216825, + 0.37404534314478366, + 0.1624478117912243, + 0.19006096653915058, + 0.2807147267128845, + 0.3008925278264595, + 0.2655663635815922, + 0.15844229993281767, + 0.29914408529780995, + 0.21172618186469025, + 0.16790761322927136, + 0.30558111041515773, + 0.3283094511842478, + 0.2893711966120859, + 0.15712677403079364, + 0.3561031870363303, + 0.3399396975653984, + 0.17849204771638874, + 0.2905825757924573, + 0.22699097832384502, + 0.23333955536039525, + 0.3690477657817757, + 0.33659479750092947, + 0.24688181590451858, + 0.3431152389296208, + 0.2021774520952157, + 0.2838091743016239, + 0.37375070193251486, + 0.20108010981716898, + 0.2776883085538677, + 0.3149090941169343, + 0.34002713458359635, + 0.3299638832281895, + 0.37419959158093974, + 0.3283477902345494, + 0.39058408163723857, + 0.2875740939920909, + 0.31623987107926405, + 0.3907180688950669, + 0.23484879813234816, + 0.33019154190683203, + 0.39329031385831204, + 0.3390740373790333, + 0.30767439231334276, + 0.17910146419984319, + 0.33033887761535835, + 0.15999806340206765, + 0.22238076041321397, + 0.1843468644211311, + 0.22140030492382212, + 0.3327746336060612, + 0.3339079893744836, + 0.1951033516336383, + 0.20100296190288763, + 0.2815303256142474, + 0.16752402180733597, + 0.18668668846696876, + 0.3701979137137248, + 0.3582777636418799, + 0.24460192652861884, + 0.28538709828221276, + 0.24768849752010813, + 0.3024413815461001, + 0.36190397190660684, + 0.26205004728893055, + 0.1726544506735536, + 0.2575581675629553, + 0.29668975712489953, + 0.19140194829579088, + 0.3866650795551482, + 0.22123238733787493, + 0.19406539041469073, + 0.3454961940760109, + 0.1977454420164259, + 0.17436981645801083, + 0.17655517684034489, + 0.2095803087607051, + 0.17947507156513073, + 0.20680731384743303, + 0.1679408417683149, + 0.27759914711775135, + 0.33651637204458384, + 0.2178529083375983, + 0.34312872404285344, + 0.16764920626859095, + 0.18178936712377725, + 0.3246911729466798, + 0.33735036473537394, + 0.38740447719114024, + 0.2119194626337727, + 0.3898088791450125, + 0.28662523091355274, + 0.1724642919470968, + 0.3366578510043756, + 0.2003179530612233, + 0.17286313777296186, + 0.25595161366073477, + 0.2516732199246751, + 0.29367486696626993, + 0.1679282042886351, + 0.20804212290351057, + 0.21016368405324382, + 0.3448725699442977, + 0.2758251550082199, + 0.2144753006783662, + 0.2519679637397879, + 0.3625728179134361, + 0.18186865417065445, + 0.24048570476745967, + 0.38720343025241655, + 0.17493740191992618, + 0.21546288586105683, + 0.2641163589264888, + 0.22364781897484606, + 0.3326888244741735, + 0.35626263542272796, + 0.3124049452297796, + 0.2579596222471616, + 0.2331796966737278, + 0.2288086503189447, + 0.1658816775927772, + 0.2768851486335081, + 0.1982163926926304, + 0.24533755554047315, + 0.24293575846479296, + 0.21714959780694057, + 0.3623678578002604, + 0.38832079665804486, + 0.18840653625071907, + 0.2094804423417327, + 0.303269826675455, + 0.2927541315811469, + 0.349493494409327, + 0.3660399419919207, + 0.1974475576694038, + 0.19227781315264592, + 0.21750487496687143, + 0.3133221115527316, + 0.16278375635155581, + 0.25431087187105794, + 0.22314105445556898, + 0.214220265063494, + 0.29318126917790255, + 0.3687780105943481, + 0.199194167683365, + 0.2175728592633526, + 0.38984302151160766, + 0.35772763336772173, + 0.37405262850808446, + 0.32806116581031464, + 0.1666153780321018, + 0.35811426690285764, + 0.20935431380250746, + 0.26153402385684754, + 0.25920895322924353, + 0.21010198078468872, + 0.2724533303215884, + 0.15829853134527674, + 0.16899486837106376, + 0.22258596673394215, + 0.38204816293656185, + 0.3755024982358807, + 0.37791826726937705, + 0.2053806671599786, + 0.3302926788225955, + 0.3081247423227169, + 0.3312383175704722, + 0.3333396800645231, + 0.3693777302648657, + 0.3684032935296527, + 0.37507860470681686, + 0.32210130551452987, + 0.1681180143502013, + 0.25392017216292406, + 0.1734760241461332, + 0.3214427075066988, + 0.3746916179485791, + 0.2951836199236846, + 0.1614850616996995, + 0.1925418772847415, + 0.26384443762627274, + 0.2750181131266584, + 0.2961856239395332, + 0.2582508640157174, + 0.19402043916482709, + 0.1840658935436422, + 0.24375259561596574, + 0.27072740830968056, + 0.24230295304246197, + 0.37672398153216863, + 0.1896795773442467, + 0.27681680691284116, + 0.18038028204903236, + 0.20911905748723972, + 0.16307223215485447, + 0.21935550186984804, + 0.3345242203398374, + 0.26154709743968396, + 0.19752799754927486, + 0.20940906614853283, + 0.3711927626437894, + 0.3571046606569253, + 0.24852898040313115, + 0.1661893438116311, + 0.26586117495301304, + 0.39154084192434013, + 0.3447756222852849, + 0.2694216667252175, + 0.2068820089376377, + 0.25207313869165215, + 0.26338708187035065, + 0.3460408678642353, + 0.29226288647995796, + 0.3176633743852082, + 0.3030364799999126, + 0.3792970511903433, + 0.2566331793596535, + 0.33211196801235565, + 0.19525199547579478, + 0.36045188874425016, + 0.3693538839077043, + 0.34670224360371327, + 0.25616843907548426, + 0.21935106373042612, + 0.32823889693984576, + 0.17754562655400857, + 0.3459101509626023, + 0.3571434079314134, + 0.2971385366459246, + 0.21474745803091622, + 0.19917407367859827, + 0.21659520813384306, + 0.2682306281072209, + 0.36182698827929083, + 0.34526964692284023, + 0.2770643944125703, + 0.23507172127170206, + 0.17279078496060257, + 0.36317814943301696, + 0.2792604057209392, + 0.32197169793611125, + 0.2272751544902252, + 0.27311692564204965, + 0.20953122424104176, + 0.25075270279573353, + 0.2051187063860142, + 0.2526771169321052, + 0.3349732932776825, + 0.34025975612973847, + 0.24761914056120377, + 0.2565226219268527, + 0.20449104806543603, + 0.2342650419348402, + 0.21355590974944808, + 0.21915876612384305, + 0.24227464437550777, + 0.1816829843138127, + 0.17820258699374186, + 0.16702916582240265, + 0.21351369488538374, + 0.263447265499701, + 0.1821229098746753, + 0.1676937230608373, + 0.38710012660031484, + 0.17430189346155062, + 0.23187249438413843, + 0.35182037943724764, + 0.3605562476106271, + 0.28512998506370507, + 0.26557743556294067, + 0.2442192489385332, + 0.36266101377924814, + 0.3663591990978029, + 0.15951565980144164, + 0.27062495699161565, + 0.2427463837571926, + 0.1872393446740901, + 0.33302374945676005, + 0.21649016990372427, + 0.39287825343309407, + 0.2683151008537171, + 0.3265671221243743, + 0.22538376930916132, + 0.19243341026945507, + 0.23812265736822513, + 0.32198501079853015, + 0.19789588075508507, + 0.2702534975321306, + 0.1629602672821303, + 0.3578975106517338, + 0.2554903675178136, + 0.2331937792874207, + 0.16492036099143864, + 0.34646623767060614, + 0.3149781239128785, + 0.32988070028032157, + 0.3612988055450703, + 0.160928575219166, + 0.19718157809312317, + 0.38409661895684305, + 0.32385721159938535, + 0.20397645612020626, + 0.3795934764762401, + 0.21206903268098865, + 0.3286883026600943, + 0.19103039749088413, + 0.1795732974980744, + 0.28183786088272644, + 0.17112797092835264, + 0.26290581464922325, + 0.28076048863064185, + 0.2119767243181723, + 0.2516123875381441, + 0.3109636752043402, + 0.16893213758526487, + 0.2825989122510836, + 0.26407845523392254, + 0.31260400132621635, + 0.18592194255718497, + 0.2335095576901678, + 0.31549729792033593, + 0.2801070142149725, + 0.25556387068735453, + 0.28547534445244294, + 0.3846223197704387, + 0.308691818088805, + 0.34669426037347617, + 0.1789897303105384, + 0.36593690239494847, + 0.22314145719612302, + 0.3859694447473995, + 0.19193658042831985, + 0.28308866918277453, + 0.3475466343039554, + 0.28980696392386396, + 0.3005423653178126, + 0.2757409742426856, + 0.28107503613393314, + 0.2964739802981502, + 0.38688872612602226, + 0.17423707643793973, + 0.3294435900425132, + 0.19298526846807967, + 0.2881700984210902, + 0.3628378595343593, + 0.23827986815010227, + 0.2072855798952944, + 0.2215395177317899, + 0.2401949720429093, + 0.30063991138839835, + 0.34067829225839896, + 0.32199027162487037, + 0.36897911468450517, + 0.37690783631331326, + 0.22855930999206453, + 0.27986027754510456, + 0.2834013358162977, + 0.21217688123289935, + 0.29860662227416734, + 0.35117845525503677, + 0.28229741849145534, + 0.34193698711746046, + 0.2784156497875351, + 0.3134227449808751, + 0.21180121490098858, + 0.711962757813605, + 0.39815311415496873, + 0.44292046760452414, + 0.5768008109880305, + 0.7033290188598753, + 0.462326500097775, + 0.6009143044575174, + 0.6926878098947785, + 0.40097159608480726, + 0.45478684635840083, + 0.6010613401577611, + 0.7083475278602838, + 0.5877250480052306, + 0.4903215194462917, + 0.6702972200679044, + 0.46083805423231, + 0.5917125545734191, + 0.6039049477365644, + 0.497891076527091, + 0.6732794007512902, + 0.580218067394985, + 0.6356410164681873, + 0.4384105395021185, + 0.6061187612666489, + 0.5418075146160414, + 0.6920216467769131, + 0.5296890459387958, + 0.524505482008281, + 0.493532901229183, + 0.5069348601212728, + 0.4931019690741792, + 0.4127462051114675, + 0.6862369318642912, + 0.3992867827749434, + 0.6182775202064367, + 0.4923874182916165, + 0.6129371601583824, + 0.4876723676202689, + 0.41406911747025893, + 0.5867627924195378, + 0.47653259650267765, + 0.6464773141798149, + 0.4119813542049603, + 0.6166500805121151, + 0.403068372248438, + 0.5230822595153273, + 0.6939068229016099, + 0.4852540773967731, + 0.4674299953046227, + 0.5791896213994299, + 0.5672340393900775, + 0.39494905030377253, + 0.617469981323442, + 0.5227097938350032, + 0.5114480688505699, + 0.5589588869110595, + 0.45228366240912027, + 0.5886152080147398, + 0.5144332389314362, + 0.45337930341280497, + 0.5170283774824767, + 0.7103492509457714, + 0.4584289364200348, + 0.6687199528442566, + 0.6678282730015662, + 0.4491846911336971, + 0.44057740100555615, + 0.5417202304689096, + 0.6447103537654733, + 0.5909774034179112, + 0.5792443585817735, + 0.6199838604538931, + 0.5244440184586003, + 0.666558663967424, + 0.6147728111066595, + 0.708772400941591, + 0.6558796778464282, + 0.48642495200279123, + 0.48102739350062895, + 0.419511169229467, + 0.5478154067995329, + 0.49677471216019914, + 0.6201372974270869, + 0.6839439048353168, + 0.45540837195133205, + 0.4818231550917963, + 0.6220231358702435, + 0.5031023479335981, + 0.6102604046794599, + 0.45679205055844446, + 0.6587805547551189, + 0.6692178723459923, + 0.4438045975569266, + 0.5839254469962114, + 0.4999448224374055, + 0.5864116235907783, + 0.45055327914626564, + 0.6433423962298748, + 0.4970562409335306, + 0.407061779425151, + 0.4852102792984012, + 0.6663382578151473, + 0.4686690317339714, + 0.6970140445671968, + 0.4404082255883096, + 0.6643609161636244, + 0.5050783377880905, + 0.6980944265438744, + 0.5070854057232559, + 0.40724981743859734, + 0.4195438877535425, + 0.4630831862135333, + 0.6763871082747732, + 0.6119748808591626, + 0.5227511631145745, + 0.5729032312014803, + 0.6356713999361889, + 0.6811707916316445, + 0.6833006862756736, + 0.4749818335007447, + 0.6068364643289501, + 0.6058171592415011, + 0.5345663543282348, + 0.6797921380047451, + 0.7134489792052892, + 0.6348401182993568, + 0.5107115663639772, + 0.5899807403823627, + 0.6618449465476416, + 0.6044198098835072, + 0.42795994892077094, + 0.4366341076203042, + 0.5920413548845458, + 0.5747203529190272, + 0.518884267992845, + 0.6553601074800582, + 0.5522782171857559, + 0.5812425771702886, + 0.5188566928467463, + 0.43938988340427393, + 0.5904347694457215, + 0.6590473196520789, + 0.7038051314700527, + 0.7031828419179573, + 0.6190959204571592, + 0.47874301374089717, + 0.4349339092453788, + 0.5462935710533783, + 0.5149142941984725, + 0.5283519130195419, + 0.4246671343419862, + 0.4305215242815525, + 0.513097313262613, + 0.5117088703799203, + 0.4293892355480095, + 0.46080061498999286, + 0.49743613416085875, + 0.5309931815807153, + 0.6660056696389994, + 0.4488094972746772, + 0.5166096893658647, + 0.5882449824960373, + 0.4097963624557239, + 0.6123265459844238, + 0.632857815476312, + 0.5131182606714013, + 0.5941188888325492, + 0.44346260215922284, + 0.6759707223002797, + 0.6427940829966808, + 0.6533177547947908, + 0.6183672035331461, + 0.43187577978201247, + 0.4697382802289459, + 0.5042587176476276, + 0.6469666733909167, + 0.4877306742871255, + 0.6696552335834942, + 0.5039196793265777, + 0.609306749405845, + 0.7011968770974617, + 0.5566696104119744, + 0.3987921445626164, + 0.6500187356816818, + 0.5104061707756072, + 0.5282786409498476, + 0.5914821049416533, + 0.41371664573761097, + 0.5027914131558648, + 0.4989170048924323, + 0.6496438234898776, + 0.5005935179039264, + 0.3984907038239243, + 0.6263325635796174, + 0.5303873743536341, + 0.6039470208119304, + 0.5316047298841788, + 0.555653326523424, + 0.5397959474219562, + 0.4729667313697286, + 0.4702702141002456, + 0.5413508662015306, + 0.41180441671294293, + 0.4181677919032901, + 0.4446032218341824, + 0.6126476095391004, + 0.5849349635142738, + 0.5381397058965443, + 0.45648824561315693, + 0.5698735053959129, + 0.6631400538658948, + 0.436019220869814, + 0.6538220674929265, + 0.5200507921479117, + 0.5134752016334728, + 0.5242752526784109, + 0.7080406314471148, + 0.6798402242214365, + 0.5951691682006081, + 0.5060033502356611, + 0.6213449073490542, + 0.5654826490739211, + 0.46444850820655753, + 0.5194259198239838, + 0.5633495441793046, + 0.5514679681433389, + 0.5077013030094977, + 0.6127792824930988, + 0.706636292100824, + 0.570602183376504, + 0.6216645364428512, + 0.6936883910490428, + 0.43037174274898776, + 0.6964775263870293, + 0.5285076928136281, + 0.5758888633592366, + 0.5942999474428176, + 0.5336261926648287, + 0.3941968947207268, + 0.5086381182586743, + 0.5905923199279361, + 0.5279646325304657, + 0.6803705109476863, + 0.6561169359270214, + 0.4491780234668322, + 0.6044992010380432, + 0.6327137101517077, + 0.5900972837441649, + 0.5479276228352679, + 0.6935377989903508, + 0.68883600491109, + 0.6182291681083699, + 0.5364972804259742, + 0.4029616232779457, + 0.4185553611638994, + 0.620857924043035, + 0.48786970495038995, + 0.4241291930387523, + 0.7028867179969203, + 0.5841368564235132, + 0.6316830427904997, + 0.6919910956111806, + 0.39768623444669615, + 0.5112603994847797, + 0.5524596807849543, + 0.6035630338843816, + 0.6865826684910739, + 0.500470772008062, + 0.4109510221429117, + 0.6354714272691255, + 0.4703253719420525, + 0.47710484097803285, + 0.4058167282292378, + 0.494421352870279, + 0.7026531482868197, + 0.5174374840367824, + 0.44230791099097216, + 0.4976923082325452, + 0.5479838090128453, + 0.4786416117518284, + 0.7011440335923225, + 0.41471278765857056, + 0.607511076987083, + 0.4616088907730991, + 0.5410284580024868, + 0.6651454704976363, + 0.5164421580269817, + 0.569457148158764, + 0.5122448485373174, + 0.47452115281943774, + 0.49785562168792713, + 0.7097721099816737, + 0.6370586886051147, + 0.45908196640500953, + 0.4206945721375149, + 0.6620898244070043, + 0.5541928329601411, + 0.46172496049728784, + 0.6105445577372546, + 0.5033816382559141, + 0.606362865383502, + 0.4755743725507768, + 0.5909510672917728, + 0.652869171228466, + 0.4194296663268728, + 0.419780617319618, + 0.4150041526156384, + 0.554157706969425, + 0.6511881886090987, + 0.5424483958963496, + 0.40421978321879853, + 0.39438118915581644, + 0.5996588226528561, + 0.5726687042634084, + 0.43673954860820713, + 0.501418240111022, + 0.6917152383610561, + 0.5922281880774625, + 0.5291409206762938, + 0.40937635621970253, + 0.49092684000011005, + 0.6011157491176014, + 0.46792155712372785, + 0.5247583412354939, + 0.5354263298460167, + 0.41142675508304516, + 0.4567971633966736, + 0.4101714008758666, + 0.48962060543321345, + 0.6287706475444819, + 0.48601016325636387, + 0.42000514087334395, + 0.5873508035075334, + 0.49462225668471144, + 0.6846792266584254, + 0.6767559564629417, + 0.5211295669710305, + 0.45383436372513297, + 0.6254527570338038, + 0.7014324559533078, + 0.5908209858920584, + 0.6552371227271947, + 0.5471975255510084, + 0.401907613842104, + 0.3940988851527827, + 0.41118564247718153, + 0.4155635233122059, + 0.5881866790996094, + 0.5235593713836287, + 0.5110053489212206, + 0.7069588595078571, + 0.6001063305452567, + 0.6895786176075883, + 0.5447575450816875, + 0.4343283167298141, + 0.5258296219987123, + 0.5043270099255276, + 0.6943343578140002, + 0.4165226092249571, + 0.7088479312916749, + 0.6599922280624095, + 0.6999774797965107, + 0.4454606595208449, + 0.5606285702663785, + 0.5147278124059302, + 0.5852448014664361, + 0.45672618226207573, + 0.5447119969812344, + 0.6201402099201582, + 0.4190537174329982, + 0.592121634805794, + 0.6492557352068691, + 0.5855617287425616, + 0.5983685881014551, + 0.6512396364706718, + 0.48080487121892596, + 0.5072569460722686, + 0.6233654491568004, + 0.6620889124014488, + 0.548113804613509, + 0.4325435390886603, + 0.5849601205801223, + 0.49783189241094483, + 0.6906070717556729, + 0.5495575634938379, + 0.5718425696974205, + 0.635538576847613, + 0.7143773454764969, + 0.537913947609657, + 0.7020817995866242, + 0.5210328812001651, + 0.44437887223556016, + 0.7125854126890367, + 0.575759590081167, + 0.5166116245018237, + 0.5418638501605243, + 0.6863549822931128, + 0.551749778136972, + 0.396696383531449, + 0.5258638317745051, + 0.654956705455486, + 0.6297534701656669, + 0.5844938768773071, + 0.6506137715614804, + 0.6017936513297032, + 0.5975948320830823, + 0.47743095249847284, + 0.4969889735688867, + 0.6696776516085748, + 0.47798230630458827, + 0.40514333432744604, + 0.604478227488951, + 0.48386873415613857, + 0.6587588748965796, + 0.49246058327083514, + 0.7028309330559785, + 0.4200392595028487, + 0.5701312620924953, + 0.673872990010032, + 0.5441688057558004, + 0.6496054380188554, + 0.6331735011022274, + 0.6696194743702153, + 0.5229860411357092, + 0.5901206251969022, + 0.5633646242768569, + 0.48067891069377133, + 0.5019206780838119, + 0.6386806824181792, + 0.5068580992574296, + 0.4527311800430832, + 0.697842849515989, + 0.5347723423581131, + 0.41990194296940186, + 0.4821806682172247, + 0.642801469866938, + 0.47423891323911427, + 0.6770951729762045, + 0.6029199546437535, + 0.5414766113226164, + 0.5316280419791408, + 0.5754080159892239, + 0.4498250547371598, + 0.4796829775256669, + 0.6530111776489531, + 0.4615143081892326, + 0.6369686040951201, + 0.5586918878770812, + 0.5650726472638451, + 0.6524786448880111, + 0.5728944299824981, + 0.6612288933049202, + 0.5973777135252819, + 0.4395507291924551, + 0.4877236183381749, + 0.44245532767219137, + 0.5364409215909303, + 0.6879510226056141, + 0.7107724702153893, + 0.6231996167971611, + 0.5795392663302668, + 0.5249744914502672, + 0.47221489084416945, + 0.5877884833080051, + 0.48824367536196545, + 0.4561517212405387, + 0.6506123357096276, + 0.6441897474646094, + 0.5122937543954048, + 0.5292527273789344, + 0.42330486720313404, + 0.6282015340966691, + 0.572064471142192, + 0.6129446601749148, + 0.4836289137331772, + 0.6630412096577667, + 0.5574662163754142, + 0.5603952897616561, + 0.6417899140499703, + 0.6358738448723334, + 0.6212861540754707, + 0.42931239776853736, + 0.5908858847973001, + 0.40083311684666684, + 0.42692703593973963, + 0.6778874218670266, + 0.7039967647042549, + 0.6478948770867651, + 0.4366456219487328, + 0.5517499592412707, + 0.4513081239524787, + 0.46416054915834604, + 0.6649571664478269, + 0.6741598698560451, + 0.652834468502756, + 0.4633004681759674, + 0.6414494309889387, + 0.45032927783246596, + 0.4697007998246329, + 0.6620327185013504, + 0.41705394856604155, + 0.4398967707103367, + 0.5913409883343154, + 0.4875119632776497, + 0.4204386462732751, + 0.6794460614192366, + 0.49191818470651005, + 0.6092035542614986, + 0.4233056318647546, + 0.46978432977792434, + 0.5089138081262015, + 0.59091470168174, + 0.5889269051192079, + 0.5581302186254722, + 0.5033836102636637, + 0.474875837738481, + 0.6854242531757861, + 0.7027046742762378, + 0.4802457868181411, + 0.4570319256040039, + 0.4228283519401702, + 0.6344427609396895, + 0.48642863848085105, + 0.5607651503506909, + 0.5337065356401439, + 0.5881729613170801, + 0.445339611421861, + 0.42736598288665456, + 0.4359753863154801, + 0.5449090145324103, + 0.6777625181880983, + 0.6002082949102985, + 0.5599112523856377, + 0.5673828273773424, + 0.5861656719312751, + 0.48456667483354204, + 0.6225590230951801, + 0.5104525992299882, + 0.6842359879167492, + 0.63477314273042, + 0.4307422274242699, + 0.4758642861712374, + 0.47640180167741625, + 0.6276831685573012, + 0.5045703972035164, + 0.6599065028337288, + 0.44333318433811775, + 0.6871523168411047, + 0.5507136986936054, + 0.6519194862198708, + 0.615927517957735, + 0.48587952153799197, + 0.49092676591005086, + 0.6597955832205928, + 0.46580254002156196, + 0.5134089157399473, + 0.4423293796019698, + 0.6370615691859662, + 0.5512183401615391, + 0.6482636870650859, + 0.5451828832227467, + 0.5896308637740783, + 0.5221336670296579, + 0.6954960788368911, + 0.6254609800601086, + 0.4350734349858833, + 0.46900675113911505, + 0.5147580594122196, + 0.4984681877780196, + 0.500154683619607, + 0.6853185164931486, + 0.6145989551498843, + 0.414906080901187, + 0.6273437944120299, + 0.6161883627709921, + 0.5745992856253792, + 0.5347516641274731, + 0.4422418151586672, + 0.46179872861877486, + 0.5655184676399461, + 0.46971766161821243, + 0.5162779944600702, + 0.6947595108702095, + 0.4254184287904325, + 0.6224000502049263, + 0.5348603478712739, + 0.5334707606509118, + 0.6537938838140844, + 0.5281587413351672, + 0.578106877383572, + 0.6673020064178543, + 0.4913833687536658, + 0.496670000051071, + 0.4274753725190793, + 0.5847958907920836, + 0.676551993434623, + 0.6870826187359624, + 0.5578891062094579, + 0.6136536524972005, + 0.6346620422952325, + 0.5022351745552321, + 0.7106102618734005, + 0.6135516792241179, + 0.46427112422822137, + 0.6040551272936356, + 0.4238547979743983, + 0.47025503524134143, + 0.5839890777841227, + 0.6466707153828358, + 0.6123289910445529, + 0.4774983091271401, + 0.4144014702894539, + 0.6648779201576701, + 0.40730427560770127, + 0.6571738097022892, + 0.44669842592011744, + 0.4578804376440828, + 0.5359033090215639, + 0.5239434956359865, + 0.6011432278090295, + 0.6481178115420488, + 0.4971136865043413, + 0.5757776311791889, + 0.45384690812002537, + 0.702150702485456, + 0.471352288583422, + 0.4391373660643765, + 0.5219968611759536, + 0.7028692431932516, + 0.4567764773112989, + 0.4606434333092933, + 0.7039810925547345, + 0.41953842555233023, + 0.6554129177626637 + ], + "type": "scatter" + }, + { + "mode": "markers", + "name": "Expectation", + "x": [ + 0.5337653396715254 + ], + "y": [ + -0.027381306163016955 + ], + "type": "scatter" + }, + { + "fill": "toself", + "mode": "lines", + "name": "Mode", + "x": [ + 0.4178483805738874, + 0.4178483805738874, + 0.6762126815500766, + 0.6762126815500766, + 0.4178483805738874 + ], + "y": [ + 0.15624896603640903, + 0.393362968645088, + 0.393362968645088, + 0.15624896603640903, + 0.15624896603640903 + ], + "type": "scatter" + } + ], + "layout": { + "title": { + "text": "Marginal View of relative x and y position with respect to the milk" + }, + "xaxis": { + "title": { + "text": "relative_x" + }, + "range": [ + -1, + 1 + ] + }, + "yaxis": { + "title": { + "text": "relative_y" + }, + "range": [ + -1, + 1 + ] + }, + "template": { + "data": { + "histogram2dcontour": [ + { + "type": "histogram2dcontour", + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ] + } + ], + "choropleth": [ + { + "type": "choropleth", + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + } + ], + "histogram2d": [ + { + "type": "histogram2d", + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ] + } + ], + "heatmap": [ + { + "type": "heatmap", + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ] + } + ], + "heatmapgl": [ + { + "type": "heatmapgl", + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ] + } + ], + "contourcarpet": [ + { + "type": "contourcarpet", + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + } + ], + "contour": [ + { + "type": "contour", + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ] + } + ], + "surface": [ + { + "type": "surface", + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ] + } + ], + "mesh3d": [ + { + "type": "mesh3d", + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + } + ], + "scatter": [ + { + "marker": { + "line": { + "color": "#283442" + } + }, + "type": "scatter" + } + ], + "parcoords": [ + { + "type": "parcoords", + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + } + } + ], + "scatterpolargl": [ + { + "type": "scatterpolargl", + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + } + } + ], + "bar": [ + { + "error_x": { + "color": "#f2f5fa" + }, + "error_y": { + "color": "#f2f5fa" + }, + "marker": { + "line": { + "color": "rgb(17,17,17)", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "bar" + } + ], + "scattergeo": [ + { + "type": "scattergeo", + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + } + } + ], + "scatterpolar": [ + { + "type": "scatterpolar", + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + } + } + ], + "histogram": [ + { + "marker": { + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "histogram" + } + ], + "scattergl": [ + { + "marker": { + "line": { + "color": "#283442" + } + }, + "type": "scattergl" + } + ], + "scatter3d": [ + { + "type": "scatter3d", + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + } + } + ], + "scattermapbox": [ + { + "type": "scattermapbox", + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + } + } + ], + "scatterternary": [ + { + "type": "scatterternary", + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + } + } + ], + "scattercarpet": [ + { + "type": "scattercarpet", + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + } + } + ], + "carpet": [ + { + "aaxis": { + "endlinecolor": "#A2B1C6", + "gridcolor": "#506784", + "linecolor": "#506784", + "minorgridcolor": "#506784", + "startlinecolor": "#A2B1C6" + }, + "baxis": { + "endlinecolor": "#A2B1C6", + "gridcolor": "#506784", + "linecolor": "#506784", + "minorgridcolor": "#506784", + "startlinecolor": "#A2B1C6" + }, + "type": "carpet" + } + ], + "table": [ + { + "cells": { + "fill": { + "color": "#506784" + }, + "line": { + "color": "rgb(17,17,17)" + } + }, + "header": { + "fill": { + "color": "#2a3f5f" + }, + "line": { + "color": "rgb(17,17,17)" + } + }, + "type": "table" + } + ], + "barpolar": [ + { + "marker": { + "line": { + "color": "rgb(17,17,17)", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "barpolar" + } + ], + "pie": [ + { + "automargin": true, + "type": "pie" + } + ] + }, + "layout": { + "autotypenumbers": "strict", + "colorway": [ + "#636efa", + "#EF553B", + "#00cc96", + "#ab63fa", + "#FFA15A", + "#19d3f3", + "#FF6692", + "#B6E880", + "#FF97FF", + "#FECB52" + ], + "font": { + "color": "#f2f5fa" + }, + "hovermode": "closest", + "hoverlabel": { + "align": "left" + }, + "paper_bgcolor": "rgb(17,17,17)", + "plot_bgcolor": "rgb(17,17,17)", + "polar": { + "bgcolor": "rgb(17,17,17)", + "angularaxis": { + "gridcolor": "#506784", + "linecolor": "#506784", + "ticks": "" + }, + "radialaxis": { + "gridcolor": "#506784", + "linecolor": "#506784", + "ticks": "" + } + }, + "ternary": { + "bgcolor": "rgb(17,17,17)", + "aaxis": { + "gridcolor": "#506784", + "linecolor": "#506784", + "ticks": "" + }, + "baxis": { + "gridcolor": "#506784", + "linecolor": "#506784", + "ticks": "" + }, + "caxis": { + "gridcolor": "#506784", + "linecolor": "#506784", + "ticks": "" + } + }, + "coloraxis": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "colorscale": { + "sequential": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ], + "sequentialminus": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ], + "diverging": [ + [ + 0, + "#8e0152" + ], + [ + 0.1, + "#c51b7d" + ], + [ + 0.2, + "#de77ae" + ], + [ + 0.3, + "#f1b6da" + ], + [ + 0.4, + "#fde0ef" + ], + [ + 0.5, + "#f7f7f7" + ], + [ + 0.6, + "#e6f5d0" + ], + [ + 0.7, + "#b8e186" + ], + [ + 0.8, + "#7fbc41" + ], + [ + 0.9, + "#4d9221" + ], + [ + 1, + "#276419" + ] + ] + }, + "xaxis": { + "gridcolor": "#283442", + "linecolor": "#506784", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "#283442", + "automargin": true, + "zerolinewidth": 2 + }, + "yaxis": { + "gridcolor": "#283442", + "linecolor": "#506784", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "#283442", + "automargin": true, + "zerolinewidth": 2 + }, + "scene": { + "xaxis": { + "backgroundcolor": "rgb(17,17,17)", + "gridcolor": "#506784", + "linecolor": "#506784", + "showbackground": true, + "ticks": "", + "zerolinecolor": "#C8D4E3", + "gridwidth": 2 + }, + "yaxis": { + "backgroundcolor": "rgb(17,17,17)", + "gridcolor": "#506784", + "linecolor": "#506784", + "showbackground": true, + "ticks": "", + "zerolinecolor": "#C8D4E3", + "gridwidth": 2 + }, + "zaxis": { + "backgroundcolor": "rgb(17,17,17)", + "gridcolor": "#506784", + "linecolor": "#506784", + "showbackground": true, + "ticks": "", + "zerolinecolor": "#C8D4E3", + "gridwidth": 2 + } + }, + "shapedefaults": { + "line": { + "color": "#f2f5fa" + } + }, + "annotationdefaults": { + "arrowcolor": "#f2f5fa", + "arrowhead": 0, + "arrowwidth": 1 + }, + "geo": { + "bgcolor": "rgb(17,17,17)", + "landcolor": "rgb(17,17,17)", + "subunitcolor": "#506784", + "showland": true, + "showlakes": true, + "lakecolor": "rgb(17,17,17)" + }, + "title": { + "x": 0.05 + }, + "updatemenudefaults": { + "bgcolor": "#506784", + "borderwidth": 0 + }, + "sliderdefaults": { + "bgcolor": "#C8D4E3", + "borderwidth": 1, + "bordercolor": "rgb(17,17,17)", + "tickwidth": 0 + }, + "mapbox": { + "style": "dark" + } + } + } + }, + "config": { + "plotlyServerURL": "https://plot.ly" + } + }, + "text/html": "
    " + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "grounded_model = fpa.ground_model()\n", + "p_xy = grounded_model.marginal([relative_x, relative_y]).simplify()\n", + "fig = go.Figure(p_xy.root.plot_2d(), p_xy.root.plotly_layout())\n", + "fig.update_layout(title=\"Marginal View of relative x and y position with respect to the milk\",\n", + " xaxis_range=[-1, 1], yaxis_range=[-1, 1])\n", + "fig.show()" + ], + "metadata": { + "collapsed": false, + "ExecuteTime": { + "end_time": "2024-03-21T13:49:03.412572Z", + "start_time": "2024-03-21T13:49:00.757156Z" + } + }, + "id": "a36ee203bb45f8b1", + "execution_count": 13 + }, + { + "cell_type": "markdown", + "source": [ + "Finally, we observe our improved plan in action." + ], + "metadata": { + "collapsed": false + }, + "id": "bd4fd2fa3d469c8c" + }, + { + "cell_type": "code", + "outputs": [], + "source": [ + "from pycram.designators.actions.actions import ParkArmsActionPerformable\n", + "\n", + "world.reset_bullet_world()\n", + "milk.set_pose(Pose([0.5, 3.15, 1.04]))\n", + "with simulated_robot:\n", + " \n", + " MoveTorsoActionPerformable(0.3).perform()\n", + " for sample in fpa:\n", + " try:\n", + " ParkArmsActionPerformable(Arms.BOTH).perform()\n", + " sample.perform()\n", + " break\n", + " except PlanFailure as e:\n", + " continue" + ], + "metadata": { + "collapsed": false, + "ExecuteTime": { + "end_time": "2024-03-21T13:49:04.597208Z", + "start_time": "2024-03-21T13:49:03.413811Z" + } + }, + "id": "ea57ad24b398e28f", + "execution_count": 14 + }, + { + "cell_type": "code", + "outputs": [], + "source": [ + "# world.exit()\n", + "# viz_marker_publisher._stop_publishing()" + ], + "metadata": { + "collapsed": false, + "ExecuteTime": { + "end_time": "2024-03-21T13:49:04.599597Z", + "start_time": "2024-03-21T13:49:04.598003Z" + } + }, + "id": "62728fa8ed6e55bd", + "execution_count": 15 + } + ], + "metadata": { + "kernelspec": { + "name": "pycram", + "language": "python", + "display_name": "pycram" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.6" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/examples/interface_examples/giskard.ipynb b/examples/interface_examples/giskard.ipynb index 91c6b957b..54f81f4bc 100644 --- a/examples/interface_examples/giskard.ipynb +++ b/examples/interface_examples/giskard.ipynb @@ -8,17 +8,17 @@ "# Giskard interface in PyCRAM\n", "This notebook should provide you with an example on how to use the Giskard interface. This includes how to use the interface, how it actually works and how to extend it. \n", "\n", - "We start installing and starting Giskard. For the installation please follow the instructions [here](https://github.com/SemRoCo/giskardpy).\n", - "After you finish the installation you should be able to start giskard by calling \n", + "We start by installing and launching Giskard. For the installation please follow the instructions [here](https://github.com/SemRoCo/giskardpy).\n", + "After you finish the installation you should be able to launch Giskard by calling: \n", "```\n", "roslaunch giskardpy giskardpy_pr2_standalone.launch\n", "```\n", "\n", - "In this way you can start Giskard for any robot that is supported.\n", + "This way you can launch Giskard for any robot that is supported:\n", "```\n", "roslaunch giskardpy giskardpy_hsr_standalone.launch\n", "```\n", - "\"Standalone\" means that Giskard only uses a simulated robot and does not look for a real robot. If you want to use Giskard with a real robot you have to switch \"standalone\" with \"iai\". \n", + "\"Standalone\" means that Giskard only uses a simulated robot and does not look for a real robot. If you want to use Giskard with a real robot you have to switch out \"standalone\" with \"iai\", e.g:\n", "```\n", "roslaunch giskardpy giskardpy_hsr_iai.launch\n", "```\n", @@ -33,9 +33,9 @@ "source": [ "## How to use the Giskard interface \n", "Everything related to the Giskard interface is located in ```pycram.external_interfaces.giskard```. \n", - "The content of the file can be roughtly divided into three parts:\n", - " 1. Methods to manage the beliefe states between PyCRAM and Giskard\n", - " 2. Motion goals that should be send to Giskard for execution \n", + "The content of the file can be roughly divided into three parts:\n", + " 1. Methods to manage the belief states between PyCRAM and Giskard\n", + " 2. Motion goals that should be sent to Giskard for execution \n", " 3. Helper methods to construct ROS messages\n", " \n", "The most useful methods are the ones for sending and executing Motion goals. These are the ones we will mostly look at.\n", @@ -84,11 +84,11 @@ "id": "f4c4f85d", "metadata": {}, "source": [ - "Now we have a PyCRAM belief state set up, belief state in this case just refeers to the BulletWorld since the BulletWorld represents what we belief the world to look like. \n", + "Now we have a PyCRAM belief state set up, belief state in this case just refers to the BulletWorld since the BulletWorld represents what we believe the world to look like. \n", "\n", - "The next step will be to send a simple motion goal. The motion goal we will be sending is moving the torso up. For this we just need to move one joint so we use the ```achive_joint_goal```. This method takes a dictionary with the joints that should be moved and the target value for the joint. \n", + "The next step will be to send a simple motion goal. The motion goal we will be sending is moving the torso up. For this we just need to move one joint, so we can use the ```achive_joint_goal```. This method takes a dictionary with the joints that should be moved and the target value for the joints. \n", "\n", - "Look at Rviz to see the robot move, since we call Giskard for movement the robot in the BulletWorld will not move." + "Look at RViz to see the robot move, since we call Giskard for movement the robot in the BulletWorld will not move." ] }, { @@ -110,11 +110,11 @@ "id": "77dbded9", "metadata": {}, "source": [ - "For Giskard everything is connected by joints (this is called [World Tree](https://github.com/SemRoCo/giskardpy/wiki/World-Tree) by Giskard) therefore we can move the robot by using a motion goal between the map origin and the robot base. \n", + "For Giskard everything is connected by joints (this is called a [World Tree](https://github.com/SemRoCo/giskardpy/wiki/World-Tree) by Giskard) therefore we can move the robot's base by using motion goals between the map origin and the robot base. (e.g. by sending a \"base_link\" goal in the \"map\" frame).\n", "\n", "In the example below we use a cartesian goal, meaning we give Giskard a goal pose, a root link and a tip link and Giskard tries to move all joints between root link and tip link such that the tip link is at the goal pose.\n", "\n", - "This sort of movement is fine for short distance but keep in mind that Giskard has no collision avoidance for longer journeys. So using MoveBase for longer distances is a better idea." + "This sort of movement is fine for short distances, but keep in mind that Giskard has no collision avoidance for longer journeys. So using MoveBase for longer distances is a better idea." ] }, { @@ -135,9 +135,9 @@ "id": "98af5723", "metadata": {}, "source": [ - "Now for the last example: we will move the gripper using full body motion controll. \n", + "Now for the last example: we will move the gripper using full body motion control. \n", "\n", - "We will again use the cartesian goal, but now between \"map\" and \"r_gripper_tool_frame\". This will not only move the robot (because the chain between \"map\" and \"base_link\" as used in the previous example is also part of this chain) but also move the arm of the robot such that it reaches the goal pose." + "We will again use the cartesian goal, but now between \"map\" and \"r_gripper_tool_frame\" frames. This will not only move the robot (because the kinematic chain between \"map\" and \"base_link\" as used in the previous example is also part of this chain) but also move the arm of the robot such that it reaches the goal pose." ] }, { @@ -158,7 +158,7 @@ "id": "7dfe78ba", "metadata": {}, "source": [ - "That conludes this example you can now close the BulletWorld by using the \"exit\" method." + "That concludes this example you can now close the BulletWorld by using the \"exit\" method." ] }, { @@ -177,15 +177,15 @@ "metadata": {}, "source": [ "## How the Giskard interface works \n", - "The PyCRAM interface to Giskard mostly relies on the Python interface that Giskard already proviedes ([tutorial](https://github.com/SemRoCo/giskardpy/wiki/Python-Interface) and the [source code](https://github.com/SemRoCo/giskardpy/blob/master/src/giskardpy/python_interface.py)). This inteface provides methods to achive motion goals and load things into the Giskard believe state. \n", + "The PyCRAM interface to Giskard mostly relies on the Python interface that Giskard already provides ([tutorial](https://github.com/SemRoCo/giskardpy/wiki/Python-Interface) and the [source code](https://github.com/SemRoCo/giskardpy/blob/master/src/giskardpy/python_interface.py)). This interface provides methods to achieve motion goals and load things into the Giskard believe state. \n", "\n", - "What PyCRAM with this does is: Synchronize the believe state of Giskard with the one of PyCRAM by loading the environment URDF in Giskard, this is done before any motion goal is send. Furthermore, the motion goals are wrapped in methods that use PyCRAM data types. \n", + "What PyCRAM does with this, is: Synchronize the belief state of Giskard with the one of PyCRAM by loading the environment URDF in Giskard, this is done before any motion goal is sent. Furthermore, the motion goals are wrapped in methods that use PyCRAM data types. \n", "\n", - "You can also set collisions between different groups of links. By default Giskard avoids all collisions but for things like grasping an object you want to allow collisions of the gripper. The interface also the following colliion modes:\n", + "You can also set collisions between different groups of links. By default, Giskard avoids all collisions but for things like grasping an object you want to allow collisions of the gripper. The interface also supports the following collision modes:\n", " * avoid_all_collisions\n", " * allow_self_collision\n", " * allow_gripper_collision\n", - "The collision mode can be set by calling the respective method, after calling the method the collision mode is valid for the next motion goal afterwards it default back to avoid_all_collisions.\n", + "The collision mode can be set by calling the respective method, after calling the method the collision mode is valid for the next motion goal. Afterwards, it defaults back to avoid_all_collisions.\n", "\n", "There is a ```init_giskard_interface``` method which can be used as a decorator. This decorator should be used on all methods that access the giskard_wrapper, since it assures that the interface is working and checks if Giskard died or the imports for the giskard_msgs failed. " ] diff --git a/examples/interface_examples/robokudo.ipynb b/examples/interface_examples/robokudo.ipynb index 7f7f0f33d..04268950b 100644 --- a/examples/interface_examples/robokudo.ipynb +++ b/examples/interface_examples/robokudo.ipynb @@ -6,7 +6,7 @@ "metadata": {}, "source": [ "# Robokudo interface in PyCRAM\n", - "This notebook should give you an example on how the robokudo interface in PyCRAM works. We will go over how to use the interface, how it is implemented and what can be extended. \n", + "This notebook should give you an example on how the RoboKudo interface in PyCRAM works. We will go over how to use the interface, how it is implemented and what can be extended. \n", "\n", "First, you need to install RoboKudo by following the installation instructions [here](https://robokudo.ai.uni-bremen.de/installation.html). \n", "\n", @@ -61,7 +61,7 @@ "id": "da0dbc43", "metadata": {}, "source": [ - "There was no object detected since the pipline we are using for this example only returns an empty message. However this should give you an impression on how the interface works." + "There was no object detected since the pipline we are using for this example only returns an empty message. However, this should give you an impression on how the interface works." ] }, { @@ -70,12 +70,12 @@ "metadata": {}, "source": [ "## How the RoboKudo interface in PyCRAM works\n", - "The interface to RoboKudo is designed around the ROS service that RoboKudo proviedes. The interface takes a ObjectDesignatorDescription which is PyCRAMs symbolic representation of objects and converts it to a RoboKudo ObjectDesignator, the RoboKudo ObjectDesignator is then send to RoboKudo. \n", + "The interface to RoboKudo is designed around the ROS service that RoboKudo provides. The interface takes an ObjectDesignatorDescription which is PyCRAMs symbolic representation of objects and converts it to a RoboKudo ObjectDesignator, the RoboKudo ObjectDesignator is then send to RoboKudo. \n", "\n", - "The result from this is a list of RoboKudo ObjectDesignators which are possbile matches that were found in the camera FOV. Each of these ObjectDesignators has a list of possible poses that are the result of different pose estimators (currently PyCRAM picks the pose from 'ClusterPoseBBAnnotator' from the list of possible poses).\n", + "The result from this is a list of RoboKudo ObjectDesignators which are possible matches that were found in the camera FOV. Each of these ObjectDesignators has a list of possible poses that are the result of different pose estimators (currently PyCRAM picks the pose from 'ClusterPoseBBAnnotator' from the list of possible poses).\n", "PyCRAM then transforms all possible poses for the found Objects to 'map' frame and returns them as a dictionary.\n", "\n", - "When using the interface the decorator ```init_robokudo_interface``` should be added to all methods that want to send queries to RoboKudo. This decorator makes sure that RoboKudo is running and creates an action client which can be used via the gloabl variable ```robokudo_action_client```." + "When using the interface the decorator ```init_robokudo_interface``` should be added to all methods that want to send queries to RoboKudo. This decorator makes sure that RoboKudo is running and creates an action client which can be used via the global variable ```robokudo_action_client```." ] }, { @@ -84,7 +84,7 @@ "metadata": {}, "source": [ "## How to extend the RoboKudo interface in PyCRAM\n", - "At the moment the RoboKudo interface is tailored toward a specific scenarion in which only two types of objects need to be detected. The distiction is mainly made by the difference in color, which is written to the RoboKudo ObjectDesignator depending on the ObjectType of the PyCRAM ObjectDesignator. \n", + "At the moment the RoboKudo interface is tailored towards a specific scenario, in which only two types of objects need to be detected. The distinction is mainly made by the difference in color, which is written in the RoboKudo ObjectDesignator depending on the ObjectType of the PyCRAM ObjectDesignator. \n", "\n", "The main point for extension would be to make the interface more universal and extend it to work with other pipelines for example for human detection." ] diff --git a/examples/intro.ipynb b/examples/intro.ipynb index aea7c14fb..1c06477bb 100644 --- a/examples/intro.ipynb +++ b/examples/intro.ipynb @@ -12,11 +12,25 @@ "execution_count": 1, "metadata": { "ExecuteTime": { - "end_time": "2023-04-05T16:37:51.973404Z", - "start_time": "2023-04-05T16:37:51.483749Z" + "end_time": "2024-01-29T16:14:50.953932170Z", + "start_time": "2024-01-29T16:14:50.284068023Z" } }, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "pybullet build time: May 20 2022 19:44:17\n", + "Unknown attribute \"type\" in /robot[@name='pr2']/link[@name='base_laser_link']\n", + "Unknown attribute \"type\" in /robot[@name='pr2']/link[@name='wide_stereo_optical_frame']\n", + "Unknown attribute \"type\" in /robot[@name='pr2']/link[@name='narrow_stereo_optical_frame']\n", + "Unknown attribute \"type\" in /robot[@name='pr2']/link[@name='laser_tilt_link']\n", + "[WARN] [1706544890.889466]: Failed to import Giskard messages\n", + "[WARN] [1706544890.894063]: Could not import RoboKudo messages, RoboKudo interface could not be initialized\n" + ] + } + ], "source": [ "import pycram" ] @@ -39,8 +53,8 @@ "execution_count": 2, "metadata": { "ExecuteTime": { - "end_time": "2023-04-05T16:37:59.788099Z", - "start_time": "2023-04-05T16:37:57.586879Z" + "end_time": "2024-01-29T16:14:51.215354072Z", + "start_time": "2024-01-29T16:14:50.980844838Z" } }, "outputs": [ @@ -48,8 +62,6 @@ "name": "stderr", "output_type": "stream", "text": [ - "Unknown tag \"material\" in /robot[@name='plane']/link[@name='planeLink']/collision[1]\n", - "Unknown tag \"contact\" in /robot[@name='plane']/link[@name='planeLink']\n", "Unknown tag \"material\" in /robot[@name='plane']/link[@name='planeLink']/collision[1]\n", "Unknown tag \"contact\" in /robot[@name='plane']/link[@name='planeLink']\n" ] @@ -67,123 +79,43 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "The world can also be closed with the 'exit' method" + "The BulletWorld allows to render images from arbitrary positions. In the following example we render images with the camera at the position [0.3, 0, 1] and pointing towards [1, 0, 1], so we are looking upwards along the x-axis. \n", + "\n", + "The renderer returns 3 different kinds of images which are also shown on the left side of the BulletWorld window. (If these winodws are missing, click the BulletWorld window to focus it, and press \"g\") These images are:\n", + "* An RGB image which shows everything like it is rendered in the BulletWorld window, just from another perspective. \n", + "* A depth image which consists of distance values from the camera towards the objects in the field of view. \n", + "* A segmentation mask image which segments the image into the different objects displayed. The segmentation is done by assigning every pixel the unique id of the object that is displayed there. " ] }, { "cell_type": "code", - "execution_count": 37, + "execution_count": 3, "metadata": { "ExecuteTime": { - "end_time": "2023-04-05T16:38:04.800655Z", - "start_time": "2023-04-05T16:38:03.943911Z" + "end_time": "2024-01-29T16:14:51.251936758Z", + "start_time": "2024-01-29T16:14:51.234948638Z" } }, - "outputs": [], - "source": [ - "world.exit()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The BulletWorld allows to render images from arbitrary positoins. In the following example we render images with the camera at the position [0.3, 0, 1] and pointing towards [1, 0, 1], so we are looking upwards along the x-axis. \n", - "\n", - "The renderer returns 3 different kinds of images which are also shown at the left side of the BulletWorld window. These images are:\n", - "* A RGB image which shows everything like it is rendered in the BulletWorld window, just from another perspective. \n", - "* A depth image which consists of distance values from the camera towards the objects in the field of view. \n", - "* A segmentation mask image which segments the image into the different objects displayed. The segmentation is done by assigning every pixel the unique id of the object that is displayed there. " - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Unknown tag \"material\" in /robot[@name='plane']/link[@name='planeLink']/collision[1]\n", + "Unknown tag \"contact\" in /robot[@name='plane']/link[@name='planeLink']\n" + ] + }, { "data": { - "text/plain": [ - "[array([[[255, 255, 255, 255],\n", - " [255, 255, 255, 255],\n", - " [255, 255, 255, 255],\n", - " ...,\n", - " [255, 255, 255, 255],\n", - " [255, 255, 255, 255],\n", - " [255, 255, 255, 255]],\n", - " \n", - " [[255, 255, 255, 255],\n", - " [255, 255, 255, 255],\n", - " [255, 255, 255, 255],\n", - " ...,\n", - " [255, 255, 255, 255],\n", - " [255, 255, 255, 255],\n", - " [255, 255, 255, 255]],\n", - " \n", - " [[255, 255, 255, 255],\n", - " [255, 255, 255, 255],\n", - " [255, 255, 255, 255],\n", - " ...,\n", - " [255, 255, 255, 255],\n", - " [255, 255, 255, 255],\n", - " [255, 255, 255, 255]],\n", - " \n", - " ...,\n", - " \n", - " [[239, 239, 239, 255],\n", - " [239, 239, 239, 255],\n", - " [239, 239, 239, 255],\n", - " ...,\n", - " [239, 239, 239, 255],\n", - " [239, 239, 239, 255],\n", - " [239, 239, 239, 255]],\n", - " \n", - " [[239, 239, 239, 255],\n", - " [239, 239, 239, 255],\n", - " [239, 239, 239, 255],\n", - " ...,\n", - " [239, 239, 239, 255],\n", - " [239, 239, 239, 255],\n", - " [239, 239, 239, 255]],\n", - " \n", - " [[239, 239, 239, 255],\n", - " [239, 239, 239, 255],\n", - " [239, 239, 239, 255],\n", - " ...,\n", - " [239, 239, 239, 255],\n", - " [239, 239, 239, 255],\n", - " [239, 239, 239, 255]]], dtype=uint8),\n", - " array([[0.99999994, 0.99999994, 0.99999994, ..., 0.99999994, 0.99999994,\n", - " 0.99999994],\n", - " [0.99999994, 0.99999994, 0.99999994, ..., 0.99999994, 0.99999994,\n", - " 0.99999994],\n", - " [0.99999994, 0.99999994, 0.99999994, ..., 0.99999994, 0.99999994,\n", - " 0.99999994],\n", - " ...,\n", - " [0.80473447, 0.80473447, 0.80473447, ..., 0.80473447, 0.80473447,\n", - " 0.80473447],\n", - " [0.8031688 , 0.8031688 , 0.8031688 , ..., 0.8031688 , 0.8031688 ,\n", - " 0.8031688 ],\n", - " [0.80160314, 0.80160314, 0.80160314, ..., 0.80160314, 0.80160314,\n", - " 0.80160314]], dtype=float32),\n", - " array([[-1, -1, -1, ..., -1, -1, -1],\n", - " [-1, -1, -1, ..., -1, -1, -1],\n", - " [-1, -1, -1, ..., -1, -1, -1],\n", - " ...,\n", - " [ 1, 1, 1, ..., 1, 1, 1],\n", - " [ 1, 1, 1, ..., 1, 1, 1],\n", - " [ 1, 1, 1, ..., 1, 1, 1]], dtype=int32)]" - ] + "text/plain": "[array([[[255, 255, 255, 255],\n [255, 255, 255, 255],\n [255, 255, 255, 255],\n ...,\n [255, 255, 255, 255],\n [255, 255, 255, 255],\n [255, 255, 255, 255]],\n \n [[255, 255, 255, 255],\n [255, 255, 255, 255],\n [255, 255, 255, 255],\n ...,\n [255, 255, 255, 255],\n [255, 255, 255, 255],\n [255, 255, 255, 255]],\n \n [[255, 255, 255, 255],\n [255, 255, 255, 255],\n [255, 255, 255, 255],\n ...,\n [255, 255, 255, 255],\n [255, 255, 255, 255],\n [255, 255, 255, 255]],\n \n ...,\n \n [[239, 239, 239, 255],\n [239, 239, 239, 255],\n [239, 239, 239, 255],\n ...,\n [239, 239, 239, 255],\n [239, 239, 239, 255],\n [239, 239, 239, 255]],\n \n [[239, 239, 239, 255],\n [239, 239, 239, 255],\n [239, 239, 239, 255],\n ...,\n [239, 239, 239, 255],\n [239, 239, 239, 255],\n [239, 239, 239, 255]],\n \n [[239, 239, 239, 255],\n [239, 239, 239, 255],\n [239, 239, 239, 255],\n ...,\n [239, 239, 239, 255],\n [239, 239, 239, 255],\n [239, 239, 239, 255]]], dtype=uint8),\n array([[0.99999994, 0.99999994, 0.99999994, ..., 0.99999994, 0.99999994,\n 0.99999994],\n [0.99999994, 0.99999994, 0.99999994, ..., 0.99999994, 0.99999994,\n 0.99999994],\n [0.99999994, 0.99999994, 0.99999994, ..., 0.99999994, 0.99999994,\n 0.99999994],\n ...,\n [0.80473447, 0.80473447, 0.80473447, ..., 0.80473447, 0.80473447,\n 0.80473447],\n [0.8031688 , 0.8031688 , 0.8031688 , ..., 0.8031688 , 0.8031688 ,\n 0.8031688 ],\n [0.80160314, 0.80160314, 0.80160314, ..., 0.80160314, 0.80160314,\n 0.80160314]], dtype=float32),\n array([[-1, -1, -1, ..., -1, -1, -1],\n [-1, -1, -1, ..., -1, -1, -1],\n [-1, -1, -1, ..., -1, -1, -1],\n ...,\n [ 1, 1, 1, ..., 1, 1, 1],\n [ 1, 1, 1, ..., 1, 1, 1],\n [ 1, 1, 1, ..., 1, 1, 1]], dtype=int32)]" }, - "execution_count": 4, + "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "from pycram.bullet_world_reasoning import _get_images_for_target\n", - "\n", - "_get_images_for_target(Pose([1, 0, 1], [0, 0, 0, 1]), Pose([0.3, 0, 1], [0, 0, 0, 1]))" + "world.get_images_for_target(Pose([1, 0, 1], [0, 0, 0, 1]), Pose([0.3, 0, 1], [0, 0, 0, 1]))" ] }, { @@ -207,13 +139,18 @@ " * Color \n", " * Ignore Cached Files\n", "\n", - "If there is only a filename and no path PyCRAM will check in the resource directory if there is a matching file. \n" + "If there is only a filename and no path, PyCRAM will check in the resource directory if there is a matching file. \n" ] }, { "cell_type": "code", - "execution_count": 5, - "metadata": {}, + "execution_count": 4, + "metadata": { + "ExecuteTime": { + "end_time": "2024-01-29T16:14:51.319150211Z", + "start_time": "2024-01-29T16:14:51.238519616Z" + } + }, "outputs": [], "source": [ "milk = Object(\"Milk\", ObjectType.MILK, \"milk.stl\")" @@ -230,8 +167,13 @@ }, { "cell_type": "code", - "execution_count": 6, - "metadata": {}, + "execution_count": 5, + "metadata": { + "ExecuteTime": { + "end_time": "2024-01-29T16:14:51.361155485Z", + "start_time": "2024-01-29T16:14:51.360054431Z" + } + }, "outputs": [], "source": [ "milk.set_position(Pose([1, 0, 0]))" @@ -246,8 +188,13 @@ }, { "cell_type": "code", - "execution_count": 7, - "metadata": {}, + "execution_count": 6, + "metadata": { + "ExecuteTime": { + "end_time": "2024-01-29T16:14:51.404210573Z", + "start_time": "2024-01-29T16:14:51.360232825Z" + } + }, "outputs": [], "source": [ "milk.remove()" @@ -262,8 +209,13 @@ }, { "cell_type": "code", - "execution_count": 8, - "metadata": {}, + "execution_count": 7, + "metadata": { + "ExecuteTime": { + "end_time": "2024-01-29T16:14:54.380977290Z", + "start_time": "2024-01-29T16:14:51.404113811Z" + } + }, "outputs": [ { "name": "stderr", @@ -299,13 +251,18 @@ "metadata": {}, "source": [ "### Visibility Costmaps\n", - "Visibility costmaps determine every position, around a target position, from which the target is visible. Visibility Costmaps are able to work with cameras that are moveable in height, for example if the robot has a movable torso. " + "Visibility costmaps determine every position, around a target position, from which the target is visible. Visibility Costmaps are able to work with cameras that are movable in height for example, if the robot has a movable torso. " ] }, { "cell_type": "code", - "execution_count": 9, - "metadata": {}, + "execution_count": 8, + "metadata": { + "ExecuteTime": { + "end_time": "2024-01-29T16:14:54.951307507Z", + "start_time": "2024-01-29T16:14:54.380864026Z" + } + }, "outputs": [], "source": [ "import pycram.costmaps as cm\n", @@ -314,8 +271,13 @@ }, { "cell_type": "code", - "execution_count": 10, - "metadata": {}, + "execution_count": 9, + "metadata": { + "ExecuteTime": { + "end_time": "2024-01-29T16:15:01.756580723Z", + "start_time": "2024-01-29T16:14:54.961615686Z" + } + }, "outputs": [], "source": [ "v.visualize()" @@ -323,8 +285,13 @@ }, { "cell_type": "code", - "execution_count": 11, - "metadata": {}, + "execution_count": 10, + "metadata": { + "ExecuteTime": { + "end_time": "2024-01-29T16:15:05.092885577Z", + "start_time": "2024-01-29T16:15:05.091325419Z" + } + }, "outputs": [], "source": [ "v.close_visualization()" @@ -340,8 +307,13 @@ }, { "cell_type": "code", - "execution_count": 12, - "metadata": {}, + "execution_count": 11, + "metadata": { + "ExecuteTime": { + "end_time": "2024-01-29T16:15:05.847569295Z", + "start_time": "2024-01-29T16:15:05.093669437Z" + } + }, "outputs": [], "source": [ "o = cm.OccupancyCostmap(0.2, from_ros=False, size=300, resolution=0.02, origin=Pose([0, 0, 0.1], [0, 0, 0, 1]))" @@ -349,8 +321,13 @@ }, { "cell_type": "code", - "execution_count": 13, - "metadata": {}, + "execution_count": 12, + "metadata": { + "ExecuteTime": { + "end_time": "2024-01-29T16:15:05.944506368Z", + "start_time": "2024-01-29T16:15:05.849514274Z" + } + }, "outputs": [], "source": [ "s = cm.SemanticCostmap(kitchen, \"kitchen_island_surface\", size=100, resolution=0.02)\n", @@ -368,8 +345,13 @@ }, { "cell_type": "code", - "execution_count": 14, - "metadata": {}, + "execution_count": 13, + "metadata": { + "ExecuteTime": { + "end_time": "2024-01-29T16:15:06.810575822Z", + "start_time": "2024-01-29T16:15:05.955432369Z" + } + }, "outputs": [], "source": [ "o.visualize()" @@ -377,8 +359,13 @@ }, { "cell_type": "code", - "execution_count": 15, - "metadata": {}, + "execution_count": 14, + "metadata": { + "ExecuteTime": { + "end_time": "2024-01-29T16:15:07.161867271Z", + "start_time": "2024-01-29T16:15:07.159806241Z" + } + }, "outputs": [], "source": [ "o.close_visualization()" @@ -393,8 +380,13 @@ }, { "cell_type": "code", - "execution_count": 16, - "metadata": {}, + "execution_count": 15, + "metadata": { + "ExecuteTime": { + "end_time": "2024-01-29T16:15:07.193879719Z", + "start_time": "2024-01-29T16:15:07.161787791Z" + } + }, "outputs": [], "source": [ "ov = o + v" @@ -402,8 +394,13 @@ }, { "cell_type": "code", - "execution_count": 17, - "metadata": {}, + "execution_count": 16, + "metadata": { + "ExecuteTime": { + "end_time": "2024-01-29T16:15:09.283523209Z", + "start_time": "2024-01-29T16:15:07.188128850Z" + } + }, "outputs": [], "source": [ "ov.visualize()" @@ -411,8 +408,13 @@ }, { "cell_type": "code", - "execution_count": 18, - "metadata": {}, + "execution_count": 17, + "metadata": { + "ExecuteTime": { + "end_time": "2024-01-29T16:15:10.347228575Z", + "start_time": "2024-01-29T16:15:09.280179794Z" + } + }, "outputs": [], "source": [ "ov.close_visualization()" @@ -432,18 +434,27 @@ "* Blocking\n", "* Supporting\n", "\n", - "To show the geometric reasoning we first a robot as well as the milk Object again." + "To show the geometric reasoning we first spawn a robot as well as the milk Object again." ] }, { "cell_type": "code", - "execution_count": 19, - "metadata": {}, + "execution_count": 18, + "metadata": { + "ExecuteTime": { + "end_time": "2024-01-29T16:15:12.961385558Z", + "start_time": "2024-01-29T16:15:10.347682457Z" + } + }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ + "Unknown attribute \"type\" in /robot[@name='pr2']/link[@name='base_laser_link']\n", + "Unknown attribute \"type\" in /robot[@name='pr2']/link[@name='wide_stereo_optical_frame']\n", + "Unknown attribute \"type\" in /robot[@name='pr2']/link[@name='narrow_stereo_optical_frame']\n", + "Unknown attribute \"type\" in /robot[@name='pr2']/link[@name='laser_tilt_link']\n", "Unknown attribute \"type\" in /robot[@name='pr2']/link[@name='base_laser_link']\n", "Unknown attribute \"type\" in /robot[@name='pr2']/link[@name='wide_stereo_optical_frame']\n", "Unknown attribute \"type\" in /robot[@name='pr2']/link[@name='narrow_stereo_optical_frame']\n", @@ -466,21 +477,15 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 19, "metadata": { - "scrolled": true + "scrolled": true, + "ExecuteTime": { + "end_time": "2024-01-29T16:15:13.246942739Z", + "start_time": "2024-01-29T16:15:12.963076402Z" + } }, "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Unknown attribute \"type\" in /robot[@name='pr2']/link[@name='base_laser_link']\n", - "Unknown attribute \"type\" in /robot[@name='pr2']/link[@name='wide_stereo_optical_frame']\n", - "Unknown attribute \"type\" in /robot[@name='pr2']/link[@name='narrow_stereo_optical_frame']\n", - "Unknown attribute \"type\" in /robot[@name='pr2']/link[@name='laser_tilt_link']\n" - ] - }, { "name": "stdout", "output_type": "stream", @@ -497,8 +502,13 @@ }, { "cell_type": "code", - "execution_count": 21, - "metadata": {}, + "execution_count": 20, + "metadata": { + "ExecuteTime": { + "end_time": "2024-01-29T16:15:13.334740244Z", + "start_time": "2024-01-29T16:15:13.249042978Z" + } + }, "outputs": [ { "name": "stdout", @@ -518,8 +528,13 @@ }, { "cell_type": "code", - "execution_count": 22, - "metadata": {}, + "execution_count": 21, + "metadata": { + "ExecuteTime": { + "end_time": "2024-01-29T16:15:13.430296220Z", + "start_time": "2024-01-29T16:15:13.334507309Z" + } + }, "outputs": [ { "name": "stdout", @@ -540,8 +555,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Designator\n", - "Designator are symbolic descriptions of Actions, Motions, Objects or Locations. In PyCRAM the different types of designators are representet by a class which takes a description, the description then tells the designator what to do. \n", + "# Designators\n", + "Designators are symbolic descriptions of Actions, Motions, Objects or Locations. In PyCRAM the different types of designators are represented by a class which takes a description, the description then tells the designator what to do. \n", "\n", "For example, let's look at a Motion Designator to move the robot to a specific location. \n", "\n" @@ -551,17 +566,22 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Motion Designator\n", + "## Motion Designators\n", "\n", - "When using a Motion Designator you need to specify which Process Module needs to be used, either the Process Module for the real or the simulated robot. This can be done either with a decorator which can be added to a function and then executes every designator in this function on the specified robot. The other possibility is a \"with\" scope which wraps a code piece. \n", + "When using a Motion Designator you need to specify which Process Module needs to be used, either the Process Module for the real or the simulated robot. A Process Module is the interface between a real or simulated robot, and PyCRAM designators. By exchanging the Process Module, one can quickly change the robot the plan is executed on, allowing PyCRAM plans to be re-used across multiple robot platforms. This can be done either with a decorator which can be added to a function and then every designator executed within this function, will be executed on the specified robot. The other possibility is a \"with\" scope which wraps a code piece.\n", "\n", - "These two ways can also be combined, you could write a function which should be executed on the real robot and in the function is a \"with\" scope which executes something on the simulated robot for reasoning purposes. " + "These two ways can also be combined, you could write a function which should be executed on the real robot and the function contains a \"with\" scope which executes something on the simulated robot for reasoning purposes. " ] }, { "cell_type": "code", - "execution_count": 23, - "metadata": {}, + "execution_count": 22, + "metadata": { + "ExecuteTime": { + "end_time": "2024-01-29T16:15:13.939910370Z", + "start_time": "2024-01-29T16:15:13.437727375Z" + } + }, "outputs": [], "source": [ "from pycram.designators.motion_designator import *\n", @@ -570,15 +590,19 @@ "description = MoveMotion(target=Pose([1, 0, 0], [0, 0, 0, 1]))\n", "\n", "with simulated_robot:\n", - " description.resolve().perform()\n", + " description.perform()\n", " \n" ] }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 23, "metadata": { - "scrolled": true + "scrolled": true, + "ExecuteTime": { + "end_time": "2024-01-29T16:15:14.446281217Z", + "start_time": "2024-01-29T16:15:13.948689644Z" + } }, "outputs": [], "source": [ @@ -586,7 +610,7 @@ "\n", "@with_simulated_robot\n", "def move():\n", - " MoveMotion(target=Pose([0, 0, 0], [0, 0, 0, 1])).resolve().perform()\n", + " MoveMotion(target=Pose([0, 0, 0], [0, 0, 0, 1])).perform()\n", "\n", "move()" ] @@ -596,8 +620,6 @@ "metadata": {}, "source": [ "Other implemented Motion Designator descriptions are:\n", - "* Pick up\n", - "* Place\n", "* Accessing\n", "* Move TCP\n", "* Looking\n", @@ -611,183 +633,26 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Object Designator\n", + "## Object Designators\n", "\n", - "Object Designator represent objects, these objects could either be from the BulletWorld or the real world. Object Designator are used, for example, by the PickUpAction to know which object should be picked up." + "An Object Designator represents objects. These objects could either be from the BulletWorld or the real world. Object Designators are used, for example, by the PickUpAction to know which object should be picked up." ] }, { "cell_type": "code", - "execution_count": 25, - "metadata": {}, + "execution_count": 24, + "metadata": { + "ExecuteTime": { + "end_time": "2024-01-29T16:15:14.453344058Z", + "start_time": "2024-01-29T16:15:14.448819583Z" + } + }, "outputs": [ { "data": { - "text/plain": [ - "BelieveObject.Object(name='Milk', type=, bullet_world_object=Object(world=, \n", - "local_transformer=, \n", - "name=Milk, \n", - "type=ObjectType.MILK, \n", - "color=[1, 1, 1, 1], \n", - "id=4, \n", - "path=/home/jdech/workspace/ros/src/pycram-1/src/pycram/../../resources/cached/milk.urdf, \n", - "joints: ..., \n", - "links: ..., \n", - "attachments: ..., \n", - "cids: ..., \n", - "original_pose=header: \n", - " seq: 0\n", - " stamp: \n", - " secs: 1699448180\n", - " nsecs: 830921888\n", - " frame_id: \"map\"\n", - "pose: \n", - " position: \n", - " x: 1.0\n", - " y: 0.0\n", - " z: 1.0\n", - " orientation: \n", - " x: 0.0\n", - " y: 0.0\n", - " z: 0.0\n", - " w: 1.0, \n", - "tf_frame=Milk_4, \n", - "urdf_object: ..., \n", - "_current_pose=header: \n", - " seq: 0\n", - " stamp: \n", - " secs: 1699448184\n", - " nsecs: 735546827\n", - " frame_id: \"map\"\n", - "pose: \n", - " position: \n", - " x: 0.6\n", - " y: -0.5\n", - " z: 0.7\n", - " orientation: \n", - " x: 0.0\n", - " y: 0.0\n", - " z: 0.0\n", - " w: 1.0, \n", - "_current_link_poses={'milk_main': header: \n", - " seq: 0\n", - " stamp: \n", - " secs: 1699448184\n", - " nsecs: 735546827\n", - " frame_id: \"map\"\n", - "pose: \n", - " position: \n", - " x: 0.6\n", - " y: -0.5\n", - " z: 0.7\n", - " orientation: \n", - " x: 0.0\n", - " y: 0.0\n", - " z: 0.0\n", - " w: 1.0}, \n", - "_current_link_transforms={'milk_main': header: \n", - " seq: 0\n", - " stamp: \n", - " secs: 1699448185\n", - " nsecs: 354960680\n", - " frame_id: \"map\"\n", - "child_frame_id: \"Milk_4\"\n", - "transform: \n", - " translation: \n", - " x: 0.6\n", - " y: -0.5\n", - " z: 0.7\n", - " rotation: \n", - " x: 0.0\n", - " y: 0.0\n", - " z: 0.0\n", - " w: 1.0}, \n", - "_current_joint_states={}, \n", - "base_origin_shift=[ 4.15300950e-04 -6.29518181e-05 8.96554102e-02], \n", - "link_to_geometry={'milk_main': }), _pose=, \n", - "local_transformer=, \n", - "name=Milk, \n", - "type=ObjectType.MILK, \n", - "color=[1, 1, 1, 1], \n", - "id=4, \n", - "path=/home/jdech/workspace/ros/src/pycram-1/src/pycram/../../resources/cached/milk.urdf, \n", - "joints: ..., \n", - "links: ..., \n", - "attachments: ..., \n", - "cids: ..., \n", - "original_pose=header: \n", - " seq: 0\n", - " stamp: \n", - " secs: 1699448180\n", - " nsecs: 830921888\n", - " frame_id: \"map\"\n", - "pose: \n", - " position: \n", - " x: 1.0\n", - " y: 0.0\n", - " z: 1.0\n", - " orientation: \n", - " x: 0.0\n", - " y: 0.0\n", - " z: 0.0\n", - " w: 1.0, \n", - "tf_frame=Milk_4, \n", - "urdf_object: ..., \n", - "_current_pose=header: \n", - " seq: 0\n", - " stamp: \n", - " secs: 1699448184\n", - " nsecs: 735546827\n", - " frame_id: \"map\"\n", - "pose: \n", - " position: \n", - " x: 0.6\n", - " y: -0.5\n", - " z: 0.7\n", - " orientation: \n", - " x: 0.0\n", - " y: 0.0\n", - " z: 0.0\n", - " w: 1.0, \n", - "_current_link_poses={'milk_main': header: \n", - " seq: 0\n", - " stamp: \n", - " secs: 1699448184\n", - " nsecs: 735546827\n", - " frame_id: \"map\"\n", - "pose: \n", - " position: \n", - " x: 0.6\n", - " y: -0.5\n", - " z: 0.7\n", - " orientation: \n", - " x: 0.0\n", - " y: 0.0\n", - " z: 0.0\n", - " w: 1.0}, \n", - "_current_link_transforms={'milk_main': header: \n", - " seq: 0\n", - " stamp: \n", - " secs: 1699448185\n", - " nsecs: 354960680\n", - " frame_id: \"map\"\n", - "child_frame_id: \"Milk_4\"\n", - "transform: \n", - " translation: \n", - " x: 0.6\n", - " y: -0.5\n", - " z: 0.7\n", - " rotation: \n", - " x: 0.0\n", - " y: 0.0\n", - " z: 0.0\n", - " w: 1.0}, \n", - "_current_joint_states={}, \n", - "base_origin_shift=[ 4.15300950e-04 -6.29518181e-05 8.96554102e-02], \n", - "link_to_geometry={'milk_main': })>)" - ] + "text/plain": "BelieveObject.Object(name='Milk', type=, bullet_world_object=Object(world=, \nlocal_transformer=, \nname=Milk, \ntype=ObjectType.MILK, \ncolor=[1, 1, 1, 1], \nid=4, \npath=/home/dprueser/workspace/ros/src/pycram/src/pycram/../../resources/cached/milk.urdf, \njoints: ..., \nlinks: ..., \nattachments: ..., \ncids: ..., \noriginal_pose=header: \n seq: 0\n stamp: \n secs: 1706544910\n nsecs: 372853994\n frame_id: \"map\"\npose: \n position: \n x: 1.0\n y: 0.0\n z: 1.0\n orientation: \n x: 0.0\n y: 0.0\n z: 0.0\n w: 1.0, \ntf_frame=Milk_4, \nurdf_object: ..., \n_current_pose=header: \n seq: 0\n stamp: \n secs: 1706544913\n nsecs: 335583925\n frame_id: \"map\"\npose: \n position: \n x: 0.6\n y: -0.5\n z: 0.7\n orientation: \n x: 0.0\n y: 0.0\n z: 0.0\n w: 1.0, \n_current_link_poses: ..., \n_current_link_transforms: ..., \n_current_joint_states={}, \nbase_origin_shift=[ 4.15300950e-04 -6.29518181e-05 8.96554102e-02], \nlink_to_geometry: ...), _pose=, \nlocal_transformer=, \nname=Milk, \ntype=ObjectType.MILK, \ncolor=[1, 1, 1, 1], \nid=4, \npath=/home/dprueser/workspace/ros/src/pycram/src/pycram/../../resources/cached/milk.urdf, \njoints: ..., \nlinks: ..., \nattachments: ..., \ncids: ..., \noriginal_pose=header: \n seq: 0\n stamp: \n secs: 1706544910\n nsecs: 372853994\n frame_id: \"map\"\npose: \n position: \n x: 1.0\n y: 0.0\n z: 1.0\n orientation: \n x: 0.0\n y: 0.0\n z: 0.0\n w: 1.0, \ntf_frame=Milk_4, \nurdf_object: ..., \n_current_pose=header: \n seq: 0\n stamp: \n secs: 1706544913\n nsecs: 335583925\n frame_id: \"map\"\npose: \n position: \n x: 0.6\n y: -0.5\n z: 0.7\n orientation: \n x: 0.0\n y: 0.0\n z: 0.0\n w: 1.0, \n_current_link_poses: ..., \n_current_link_transforms: ..., \n_current_joint_states={}, \nbase_origin_shift=[ 4.15300950e-04 -6.29518181e-05 8.96554102e-02], \nlink_to_geometry: ...)>)" }, - "execution_count": 25, + "execution_count": 24, "metadata": {}, "output_type": "execute_result" } @@ -809,11 +674,7913 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 25, "metadata": { - "scrolled": false + "scrolled": false, + "ExecuteTime": { + "end_time": "2024-01-29T16:15:14.493010865Z", + "start_time": "2024-01-29T16:15:14.451251059Z" + } }, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": "BelieveObject.Object(name='Milk', type=, bullet_world_object=Object(world=, \nlocal_transformer=, \nname=Milk, \ntype=ObjectType.MILK, \ncolor=[1, 1, 1, 1], \nid=4, \npath=/home/dprueser/workspace/ros/src/pycram/src/pycram/../../resources/cached/milk.urdf, \njoints: ..., \nlinks: ..., \nattachments: ..., \ncids: ..., \noriginal_pose=header: \n seq: 0\n stamp: \n secs: 1706544910\n nsecs: 372853994\n frame_id: \"map\"\npose: \n position: \n x: 1.0\n y: 0.0\n z: 1.0\n orientation: \n x: 0.0\n y: 0.0\n z: 0.0\n w: 1.0, \ntf_frame=Milk_4, \nurdf_object: ..., \n_current_pose=header: \n seq: 0\n stamp: \n secs: 1706544913\n nsecs: 335583925\n frame_id: \"map\"\npose: \n position: \n x: 0.6\n y: -0.5\n z: 0.7\n orientation: \n x: 0.0\n y: 0.0\n z: 0.0\n w: 1.0, \n_current_link_poses: ..., \n_current_link_transforms: ..., \n_current_joint_states={}, \nbase_origin_shift=[ 4.15300950e-04 -6.29518181e-05 8.96554102e-02], \nlink_to_geometry: ...), _pose=, \nlocal_transformer=, \nname=Milk, \ntype=ObjectType.MILK, \ncolor=[1, 1, 1, 1], \nid=4, \npath=/home/dprueser/workspace/ros/src/pycram/src/pycram/../../resources/cached/milk.urdf, \njoints: ..., \nlinks: ..., \nattachments: ..., \ncids: ..., \noriginal_pose=header: \n seq: 0\n stamp: \n secs: 1706544910\n nsecs: 372853994\n frame_id: \"map\"\npose: \n position: \n x: 1.0\n y: 0.0\n z: 1.0\n orientation: \n x: 0.0\n y: 0.0\n z: 0.0\n w: 1.0, \ntf_frame=Milk_4, \nurdf_object: ..., \n_current_pose=header: \n seq: 0\n stamp: \n secs: 1706544913\n nsecs: 335583925\n frame_id: \"map\"\npose: \n position: \n x: 0.6\n y: -0.5\n z: 0.7\n orientation: \n x: 0.0\n y: 0.0\n z: 0.0\n w: 1.0, \n_current_link_poses: ..., \n_current_link_transforms: ..., \n_current_joint_states={}, \nbase_origin_shift=[ 4.15300950e-04 -6.29518181e-05 8.96554102e-02], \nlink_to_geometry: ...)>)" + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from pycram.designators.object_designator import *\n", + "\n", + "milk_desig = BelieveObject(names=[\"Milk\"])\n", + "milk_desig.resolve()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Location Designators\n", + "Location Designators can create a position in cartesian space from a symbolic description." + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": { + "scrolled": false, + "ExecuteTime": { + "end_time": "2024-01-29T16:15:22.177685226Z", + "start_time": "2024-01-29T16:15:14.482072615Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Resolved: CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544915\n", + " nsecs: 201824188\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.020000000000000018\n", + " y: -1.26\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.443467406158451\n", + " w: 0.8962904996010476, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544915\n", + " nsecs: 927674055\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.020000000000000018\n", + " y: -1.26\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.443467406158451\n", + " w: 0.8962904996010476, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544915\n", + " nsecs: 938544273\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: -0.18000000000000005\n", + " y: -0.36\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.08868143268496492\n", + " w: -0.9960600401064899, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544915\n", + " nsecs: 949182987\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.020000000000000018\n", + " y: -0.33999999999999997\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.1341778331057823\n", + " w: -0.9909572690600926, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544915\n", + " nsecs: 959582567\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.020000000000000018\n", + " y: -0.38\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.1018321670517163\n", + " w: -0.9948015931599383, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544915\n", + " nsecs: 969888687\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.020000000000000018\n", + " y: -0.36\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.1181477706660459\n", + " w: -0.9929960243055576, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544915\n", + " nsecs: 979798555\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.7\n", + " y: 0.5\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.7414525335518785\n", + " w: -0.6710053207609464, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544915\n", + " nsecs: 994071245\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.7\n", + " y: 0.48\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.7421299374143975\n", + " w: -0.6702560376403205, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544916\n", + " nsecs: 9548187\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: -0.18000000000000005\n", + " y: -0.38\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.07625058147116927\n", + " w: -0.997088686539622, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544916\n", + " nsecs: 24910449\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: -0.18000000000000005\n", + " y: -0.4\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.0637115975084186\n", + " w: -0.9979683523754275, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544916\n", + " nsecs: 40581226\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.020000000000000018\n", + " y: -0.4\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.08526395561915938\n", + " w: -0.9963583983046332, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544916\n", + " nsecs: 71025371\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: -0.18000000000000005\n", + " y: -0.46\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.025615781497071395\n", + " w: -0.9996718620318842, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544916\n", + " nsecs: 103567123\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.7\n", + " y: 0.44000000000000006\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.7435677691352427\n", + " w: -0.6686605810897175, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544916\n", + " nsecs: 120177507\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.7\n", + " y: 0.42000000000000004\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.7443316400531483\n", + " w: -0.6678101598626592, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544916\n", + " nsecs: 135888099\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.7\n", + " y: 0.4\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.7451280178851306\n", + " w: -0.6669214623646299, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544916\n", + " nsecs: 147926568\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.020000000000000018\n", + " y: -0.42\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.0684794522339555\n", + " w: -0.9976525269961167, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544916\n", + " nsecs: 158867120\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.020000000000000018\n", + " y: -0.44\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.051517987991811\n", + " w: -0.9986720667532839, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544916\n", + " nsecs: 171792984\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.020000000000000018\n", + " y: -0.46\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.03442144373073932\n", + " w: -0.9994074065222308, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544916\n", + " nsecs: 183446645\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: -0.18000000000000005\n", + " y: -0.42\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.051081118766858044\n", + " w: -0.9986945074974259, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544916\n", + " nsecs: 195348024\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.020000000000000018\n", + " y: -0.5\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 1.2246467991473532e-16\n", + " w: -1.0, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544916\n", + " nsecs: 225474596\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: -0.18000000000000005\n", + " y: -0.5\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 1.2246467991473532e-16\n", + " w: -1.0, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544916\n", + " nsecs: 235300779\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: -0.18000000000000005\n", + " y: -0.52\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.012817353286048666\n", + " w: 0.9999178543534167, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544916\n", + " nsecs: 246283054\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: -0.18000000000000005\n", + " y: -0.54\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.025615781497071274\n", + " w: 0.9996718620318842, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544916\n", + " nsecs: 255914211\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: -0.18000000000000005\n", + " y: -0.56\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.03837651950358723\n", + " w: 0.9992633500488202, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544916\n", + " nsecs: 265790700\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: -0.18000000000000005\n", + " y: -0.58\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.051081118766857926\n", + " w: 0.9986945074974259, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544916\n", + " nsecs: 276698589\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: -0.18000000000000005\n", + " y: -0.6\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.06371159750841848\n", + " w: 0.9979683523754275, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544916\n", + " nsecs: 289893150\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: -0.18000000000000005\n", + " y: -0.62\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.07625058147116914\n", + " w: 0.997088686539622, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544916\n", + " nsecs: 303444147\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.42\n", + " y: 0.48\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.6400579972438699\n", + " w: -0.7683265973296552, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544916\n", + " nsecs: 314954519\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.42\n", + " y: 0.45999999999999996\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.6386358371363977\n", + " w: -0.7695091081495349, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544916\n", + " nsecs: 332621335\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.42\n", + " y: 0.44000000000000006\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.637152936590636\n", + " w: -0.7707373971684058, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544916\n", + " nsecs: 348136901\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.42\n", + " y: 0.42000000000000004\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.6356053782081866\n", + " w: -0.7720141211097294, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544916\n", + " nsecs: 359711885\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.42\n", + " y: 0.4\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.6339889056055383\n", + " w: -0.7733421413379021, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544916\n", + " nsecs: 370139122\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.42\n", + " y: 0.38\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.6322988865446836\n", + " w: -0.7747245433535415, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544916\n", + " nsecs: 395307302\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.42\n", + " y: 0.21999999999999997\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.6154122094026357\n", + " w: -0.7882054380161091, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544916\n", + " nsecs: 405689239\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.42\n", + " y: 0.20000000000000007\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.6127638044913316\n", + " w: -0.7902661070204827, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544916\n", + " nsecs: 416645288\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.020000000000000018\n", + " y: -0.48\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.017233697316775633\n", + " w: -0.9998514888106103, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544916\n", + " nsecs: 437982320\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.020000000000000018\n", + " y: -0.52\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.01723369731677551\n", + " w: 0.9998514888106103, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544916\n", + " nsecs: 448891639\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.020000000000000018\n", + " y: -1.06\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.3745654411331824\n", + " w: 0.9272004801059501, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544916\n", + " nsecs: 469527959\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.7\n", + " y: 0.21999999999999997\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.7541778209662121\n", + " w: -0.6566702478129005, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544916\n", + " nsecs: 480023622\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.7\n", + " y: 0.20000000000000007\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.7554539549957066\n", + " w: -0.6552017413601289, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544916\n", + " nsecs: 490493774\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.7\n", + " y: 0.18000000000000005\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.7568004989740795\n", + " w: -0.6536459322542933, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544916\n", + " nsecs: 501381158\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.7\n", + " y: 0.16000000000000003\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.7582233771877503\n", + " w: -0.6519948698310459, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544916\n", + " nsecs: 511650800\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.7\n", + " y: 0.14\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.7597291886829179\n", + " w: -0.6502396172667391, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544916\n", + " nsecs: 521751880\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.7\n", + " y: 0.12\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.7613253045921371\n", + " w: -0.6483700953835624, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544916\n", + " nsecs: 532479286\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.7\n", + " y: 0.09999999999999998\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.7630199824727258\n", + " w: -0.6463748961301956, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544916\n", + " nsecs: 561986207\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.7\n", + " y: 0.040000000000000036\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.7687942703292956\n", + " w: -0.6394961844365031, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544916\n", + " nsecs: 571810960\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.7\n", + " y: -0.03999999999999998\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.7785979849482799\n", + " w: -0.6275230496439776, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544916\n", + " nsecs: 581784725\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.020000000000000018\n", + " y: -0.54\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.034421443730739416\n", + " w: 0.9994074065222308, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544916\n", + " nsecs: 601855516\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.020000000000000018\n", + " y: -0.58\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.06847945223395538\n", + " w: 0.9976525269961167, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544916\n", + " nsecs: 611686706\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.020000000000000018\n", + " y: -0.6\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.08526395561915948\n", + " w: 0.9963583983046332, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544916\n", + " nsecs: 622118949\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.020000000000000018\n", + " y: -0.62\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.10183216705171617\n", + " w: 0.9948015931599383, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544916\n", + " nsecs: 632574319\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.020000000000000018\n", + " y: -0.64\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.118147770666046\n", + " w: 0.9929960243055576, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544916\n", + " nsecs: 643788337\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.020000000000000018\n", + " y: -0.66\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.13417783310578218\n", + " w: 0.9909572690600926, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544916\n", + " nsecs: 654880285\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.020000000000000018\n", + " y: -0.6799999999999999\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.1498930671991917\n", + " w: 0.9887022142210559, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544916\n", + " nsecs: 675857067\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.020000000000000018\n", + " y: -0.72\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.18028099412059023\n", + " w: 0.98361514992343, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544916\n", + " nsecs: 696542024\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.020000000000000018\n", + " y: -0.76\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.20915386140954798\n", + " w: 0.9778827446363269, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544916\n", + " nsecs: 728210210\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.020000000000000018\n", + " y: -0.8400000000000001\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.2620133869693895\n", + " w: 0.9650642388197943, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544916\n", + " nsecs: 769653797\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.020000000000000018\n", + " y: -0.9199999999999999\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.30826764220152825\n", + " w: 0.9512996692796181, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544916\n", + " nsecs: 779698371\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.020000000000000018\n", + " y: -0.94\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.318832815984807\n", + " w: 0.947810970315916, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544916\n", + " nsecs: 790320158\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.020000000000000018\n", + " y: -0.96\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.32901544105897695\n", + " w: 0.9443245414288284, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544916\n", + " nsecs: 800973892\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.020000000000000018\n", + " y: -0.98\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.3388256770636711\n", + " w: 0.9408491699323249, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544916\n", + " nsecs: 811413764\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.020000000000000018\n", + " y: -1.0\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.34827434473373386\n", + " w: 0.9373926502807073, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544916\n", + " nsecs: 832077503\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.020000000000000018\n", + " y: -1.04\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.36613250713959444\n", + " w: 0.9305627261048418, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544916\n", + " nsecs: 853376865\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.78\n", + " y: 0.09999999999999998\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.8022929282893952\n", + " w: -0.5969305296404493, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544916\n", + " nsecs: 865315675\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.5\n", + " y: -1.02\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.636848728643575\n", + " w: 0.7709887786635173, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544916\n", + " nsecs: 875989675\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.5\n", + " y: -1.04\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.6394961844365034\n", + " w: 0.7687942703292954, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544916\n", + " nsecs: 896036386\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.5\n", + " y: -0.96\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.6275230496439778\n", + " w: 0.7785979849482799, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544916\n", + " nsecs: 906243562\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.5\n", + " y: -0.94\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.6238505014869475\n", + " w: 0.7815436979430415, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544916\n", + " nsecs: 916708469\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.5\n", + " y: -0.9199999999999999\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.6198304093435398\n", + " w: 0.7847357922594203, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544916\n", + " nsecs: 927308559\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.5\n", + " y: -1.06\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.6419537995511603\n", + " w: 0.7667433203111904, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544916\n", + " nsecs: 937535762\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.05999999999999994\n", + " y: -1.26\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.4586899104028806\n", + " w: 0.8885964022516619, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544916\n", + " nsecs: 947962045\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.05999999999999994\n", + " y: -1.1\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.4068385849311433\n", + " w: 0.9135000633887361, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544916\n", + " nsecs: 958276748\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.05999999999999994\n", + " y: -1.08\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.39911243533693425\n", + " w: 0.9169019925594128, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544916\n", + " nsecs: 969069242\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.05999999999999994\n", + " y: -1.06\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.39106548646982875\n", + " w: 0.9203628552327153, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544916\n", + " nsecs: 980567216\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.05999999999999994\n", + " y: -1.04\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.3826834323650898\n", + " w: 0.9238795325112867, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544916\n", + " nsecs: 992730140\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.05999999999999994\n", + " y: -1.02\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.3739517258340434\n", + " w: 0.9274481693042154, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544917\n", + " nsecs: 3598690\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.33999999999999997\n", + " y: 0.07999999999999996\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.5435734062236173\n", + " w: -0.8393616336517022, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544917\n", + " nsecs: 14332056\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.05999999999999994\n", + " y: -1.0\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.36485567419311876\n", + " w: 0.9310640885616225, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544917\n", + " nsecs: 24833202\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.64\n", + " y: -0.9199999999999999\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.7398679249122764\n", + " w: 0.6727521487784355, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544917\n", + " nsecs: 44901132\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.58\n", + " y: -0.06\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.6908662457673519\n", + " w: -0.7229825934691131, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544917\n", + " nsecs: 55425643\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.64\n", + " y: -0.96\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.7370989134318549\n", + " w: 0.6757848709593749, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544917\n", + " nsecs: 66057682\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.33999999999999997\n", + " y: -0.03999999999999998\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.5039557239143624\n", + " w: -0.8637294879381802, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544917\n", + " nsecs: 78454971\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.33999999999999997\n", + " y: -0.06\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.49561612558176465\n", + " w: -0.8685416835496846, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544917\n", + " nsecs: 98734617\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.58\n", + " y: 0.0\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.6928318560989847\n", + " w: -0.7210991742988171, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544917\n", + " nsecs: 108744382\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.58\n", + " y: 0.020000000000000018\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.6933854908702646\n", + " w: -0.7205668331602574, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544917\n", + " nsecs: 119309425\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.05999999999999994\n", + " y: -0.98\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.3553805575128866\n", + " w: 0.9347217015464174, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544917\n", + " nsecs: 129229784\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.13999999999999996\n", + " y: -0.4\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.10682611122099109\n", + " w: -0.9942777187292293, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544917\n", + " nsecs: 139137268\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.33999999999999997\n", + " y: -0.9199999999999999\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.4866443184625216\n", + " w: 0.8736001987798239, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544917\n", + " nsecs: 149181365\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.13999999999999996\n", + " y: -0.42\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.0859890841337593\n", + " w: -0.9962960791902362, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544917\n", + " nsecs: 159062862\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.33999999999999997\n", + " y: -0.96\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.5039557239143623\n", + " w: 0.8637294879381803, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544917\n", + " nsecs: 197809934\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.58\n", + " y: -0.94\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.6908662457673519\n", + " w: 0.7229825934691132, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544917\n", + " nsecs: 207918167\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.58\n", + " y: -0.96\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.6915789093529722\n", + " w: 0.7223009152272711, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544917\n", + " nsecs: 227355718\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.13999999999999996\n", + " y: -0.44\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.06480582077938048\n", + " w: -0.9978978933704143, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544917\n", + " nsecs: 237487077\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.13999999999999996\n", + " y: -0.46\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.043355575214250826\n", + " w: -0.9990597049715505, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544917\n", + " nsecs: 247480630\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.58\n", + " y: -1.04\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.6938978092954753\n", + " w: 0.7200734894821085, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544917\n", + " nsecs: 257900953\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.58\n", + " y: -1.06\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.6943732675901296\n", + " w: 0.7196150118335541, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544917\n", + " nsecs: 278165102\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.13999999999999996\n", + " y: -0.5\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 1.2246467991473532e-16\n", + " w: -1.0, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544917\n", + " nsecs: 288398027\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.13999999999999996\n", + " y: -0.52\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.02172373868536963\n", + " w: 0.9997640117435364, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544917\n", + " nsecs: 298751831\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.33999999999999997\n", + " y: -1.12\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.5537478323882296\n", + " w: 0.8326844168863359, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544917\n", + " nsecs: 308977603\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.74\n", + " y: 0.0\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.7967527613758144\n", + " w: -0.6043054171857262, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544917\n", + " nsecs: 319071054\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.74\n", + " y: -0.020000000000000018\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.8000000000000002\n", + " w: -0.5999999999999999, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544917\n", + " nsecs: 329062938\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.13999999999999996\n", + " y: -0.54\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.04335557521425048\n", + " w: 0.9990597049715505, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544917\n", + " nsecs: 339415788\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.13999999999999996\n", + " y: -0.56\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.06480582077938013\n", + " w: 0.9978978933704143, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544917\n", + " nsecs: 349754333\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.74\n", + " y: -0.9199999999999999\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.8112421851755609\n", + " w: 0.584710284663765, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544917\n", + " nsecs: 359853982\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.74\n", + " y: -0.94\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.8072185755038553\n", + " w: 0.5902526335066423, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544917\n", + " nsecs: 371557712\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.74\n", + " y: -0.96\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.8034804340438839\n", + " w: 0.5953311617147653, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544917\n", + " nsecs: 381916522\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.13999999999999996\n", + " y: -0.58\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.08598908413375941\n", + " w: 0.9962960791902362, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544917\n", + " nsecs: 391955852\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.13999999999999996\n", + " y: -0.6\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.10682611122099096\n", + " w: 0.9942777187292293, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544917\n", + " nsecs: 401677608\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.45999999999999996\n", + " y: 0.0\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.6043054171857263\n", + " w: -0.7967527613758143, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544917\n", + " nsecs: 411783218\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.45999999999999996\n", + " y: -0.020000000000000018\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.6\n", + " w: -0.8, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544917\n", + " nsecs: 421791553\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.64\n", + " y: -0.06\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.7384225572267273\n", + " w: -0.6743382882342812, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544917\n", + " nsecs: 432043552\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.74\n", + " y: -1.02\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.7937170381968226\n", + " w: 0.6082871552778866, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544917\n", + " nsecs: 442192077\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.74\n", + " y: -1.04\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.790873617837808\n", + " w: 0.6119795099577574, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544917\n", + " nsecs: 452643394\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.64\n", + " y: 0.0\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.7347602405829027\n", + " w: -0.6783269041240771, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544917\n", + " nsecs: 474348306\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.13999999999999996\n", + " y: -0.62\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.12724528989938316\n", + " w: 0.9918712800552408, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544917\n", + " nsecs: 484361648\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.13999999999999996\n", + " y: -0.64\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.1471837619629651\n", + " w: 0.9891091649633165, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544917\n", + " nsecs: 504082441\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.64\n", + " y: -1.04\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.7327590618734483\n", + " w: 0.680488175681506, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544917\n", + " nsecs: 514279603\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.64\n", + " y: -1.06\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.7318630507095947\n", + " w: 0.6814517407755631, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544917\n", + " nsecs: 524206399\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.05999999999999994\n", + " y: -0.94\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.33523500300737585\n", + " w: 0.9421345406886665, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544917\n", + " nsecs: 534056901\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.13999999999999996\n", + " y: -0.74\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.23813352749512762\n", + " w: 0.9712324248513985, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544917\n", + " nsecs: 544548749\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.13999999999999996\n", + " y: -0.76\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.2543984682342504\n", + " w: 0.9670994878294927, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544917\n", + " nsecs: 554365396\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.13999999999999996\n", + " y: -0.78\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.2700013373907261\n", + " w: 0.9628599471404028, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544917\n", + " nsecs: 564265251\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.13999999999999996\n", + " y: -0.8\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.28494683992052433\n", + " w: 0.9585433210968125, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544917\n", + " nsecs: 574109077\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.13999999999999996\n", + " y: -0.8200000000000001\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.2992447144182441\n", + " w: 0.9541763992536934, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544917\n", + " nsecs: 593857049\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.05999999999999994\n", + " y: -0.9\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.31340294084074444\n", + " w: 0.9496202381333145, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544917\n", + " nsecs: 604115009\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.05999999999999994\n", + " y: -0.88\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.3018224483858295\n", + " w: 0.9533641537473408, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544917\n", + " nsecs: 626145839\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.05999999999999994\n", + " y: -0.8400000000000001\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.27727888479854484\n", + " w: 0.9607894774844672, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544917\n", + " nsecs: 636278867\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.05999999999999994\n", + " y: -0.8200000000000001\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.26429951415565045\n", + " w: 0.9644406497120946, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544917\n", + " nsecs: 657084703\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.05999999999999994\n", + " y: -0.8\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.2508413082792208\n", + " w: 0.9680282217274292, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544917\n", + " nsecs: 667837142\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.5\n", + " y: -0.020000000000000018\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.6308905395898716\n", + " w: -0.7758718496349771, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544917\n", + " nsecs: 689748287\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.5\n", + " y: 0.020000000000000018\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.6368487286435749\n", + " w: -0.7709887786635174, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544917\n", + " nsecs: 709959506\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.39999999999999997\n", + " y: 0.45999999999999996\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.6308905395898716\n", + " w: -0.7758718496349771, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544917\n", + " nsecs: 720077991\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.39999999999999997\n", + " y: 0.44000000000000006\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.6292425428779993\n", + " w: -0.7772089952081288, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544917\n", + " nsecs: 729877233\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.15999999999999998\n", + " y: -0.8400000000000001\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.323044113557137\n", + " w: 0.9463839076696536, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544917\n", + " nsecs: 740610361\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.15999999999999998\n", + " y: -0.8200000000000001\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.30924417189076625\n", + " w: 0.9509826718461247, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544917\n", + " nsecs: 760720729\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.15999999999999998\n", + " y: -0.78\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.27958765375807687\n", + " w: 0.9601201715754407, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544917\n", + " nsecs: 780767917\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.39999999999999997\n", + " y: 0.4\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.6257273935913882\n", + " w: -0.7800418122827314, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544917\n", + " nsecs: 791338205\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.39999999999999997\n", + " y: 0.38\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.6238505014869477\n", + " w: -0.7815436979430415, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544917\n", + " nsecs: 803500652\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.15999999999999998\n", + " y: -0.7\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.2116996959579716\n", + " w: 0.9773347628787704, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544917\n", + " nsecs: 816298246\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.15999999999999998\n", + " y: -0.6799999999999999\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.19294175778498965\n", + " w: 0.9812102109654376, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544917\n", + " nsecs: 826271057\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.15999999999999998\n", + " y: -0.66\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.17350299206578976\n", + " w: 0.9848333421164307, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544917\n", + " nsecs: 836186170\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.15999999999999998\n", + " y: -0.64\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.15341808887275654\n", + " w: 0.988161368404286, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544917\n", + " nsecs: 846061468\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.05999999999999994\n", + " y: -0.78\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.23690237287865074\n", + " w: 0.9715334609391818, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544917\n", + " nsecs: 866801500\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.15999999999999998\n", + " y: -0.58\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.08980559531591699\n", + " w: 0.9959593139531121, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544917\n", + " nsecs: 879305124\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.15999999999999998\n", + " y: -0.56\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.06771200763417459\n", + " w: 0.9977049082880918, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544917\n", + " nsecs: 889095067\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.15999999999999998\n", + " y: -0.54\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.0453144211719414\n", + " w: 0.9989727740203193, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544917\n", + " nsecs: 899603128\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.15999999999999998\n", + " y: -0.52\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.022709687246860417\n", + " w: 0.9997421017968333, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544917\n", + " nsecs: 909643411\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.15999999999999998\n", + " y: -0.5\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 1.2246467991473532e-16\n", + " w: -1.0, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544917\n", + " nsecs: 919872760\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.15999999999999998\n", + " y: -0.48\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.022709687246860538\n", + " w: -0.9997421017968333, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544917\n", + " nsecs: 930837392\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.15999999999999998\n", + " y: -0.46\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.045314421171941524\n", + " w: -0.9989727740203193, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544917\n", + " nsecs: 940669298\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.15999999999999998\n", + " y: -0.44\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.06771200763417472\n", + " w: -0.9977049082880918, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544917\n", + " nsecs: 950444221\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.15999999999999998\n", + " y: -0.42\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.08980559531591711\n", + " w: -0.9959593139531121, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544917\n", + " nsecs: 960928440\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.15999999999999998\n", + " y: -0.4\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.11150592856108661\n", + " w: -0.9937637686571844, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544917\n", + " nsecs: 971531629\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.15999999999999998\n", + " y: -0.38\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.1327331510254085\n", + " w: -0.9911518100769762, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544917\n", + " nsecs: 981504678\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.15999999999999998\n", + " y: -0.36\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.15341808887275665\n", + " w: -0.9881613684042859, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544917\n", + " nsecs: 991544485\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.15999999999999998\n", + " y: -0.33999999999999997\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.17350299206579006\n", + " w: -0.9848333421164306, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544918\n", + " nsecs: 1651048\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.05999999999999994\n", + " y: -0.76\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.22248407835269934\n", + " w: 0.9749363234999248, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544918\n", + " nsecs: 11669158\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.05999999999999994\n", + " y: -0.74\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.20759148751784465\n", + " w: 0.978215607271796, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544918\n", + " nsecs: 21538734\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.05999999999999994\n", + " y: -0.72\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.19223376424350164\n", + " w: 0.9813491630835448, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544918\n", + " nsecs: 41085720\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.05999999999999994\n", + " y: -0.6799999999999999\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.1601822430069672\n", + " w: 0.9870874576374967, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544918\n", + " nsecs: 50888299\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.39999999999999997\n", + " y: 0.24\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.6079025311911547\n", + " w: -0.7940116577049655, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544918\n", + " nsecs: 60572385\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.39999999999999997\n", + " y: 0.21999999999999997\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.6051264893449574\n", + " w: -0.7961293436955124, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544918\n", + " nsecs: 79907894\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.39999999999999997\n", + " y: 0.18000000000000005\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.5990966850218961\n", + " w: -0.8006766900539662, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544918\n", + " nsecs: 92547893\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.39999999999999997\n", + " y: 0.16000000000000003\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.595815661390807\n", + " w: -0.8031212222581565, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544918\n", + " nsecs: 102537870\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.39999999999999997\n", + " y: 0.14\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.5923364782216495\n", + " w: -0.805690695346529, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544918\n", + " nsecs: 112884759\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.39999999999999997\n", + " y: 0.12\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.5886413254594184\n", + " w: -0.8083943282590367, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544918\n", + " nsecs: 123359680\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.39999999999999997\n", + " y: 0.09999999999999998\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.5847102846637651\n", + " w: -0.8112421851755608, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544918\n", + " nsecs: 144013881\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.39999999999999997\n", + " y: 0.06000000000000005\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.5760484367663208\n", + " w: -0.8174155604703632, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544918\n", + " nsecs: 153965234\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.39999999999999997\n", + " y: 0.040000000000000036\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.5712642314097769\n", + " w: -0.8207662139195283, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544918\n", + " nsecs: 164059638\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.39999999999999997\n", + " y: 0.020000000000000018\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.5661364326251805\n", + " w: -0.8243115549684078, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544918\n", + " nsecs: 194094181\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.39999999999999997\n", + " y: -0.03999999999999998\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.5483036971357891\n", + " w: -0.8362792928843958, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544918\n", + " nsecs: 203748703\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.39999999999999997\n", + " y: -0.06\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.541385747733913\n", + " w: -0.840774328907937, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544918\n", + " nsecs: 213503837\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.05999999999999994\n", + " y: -0.66\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.14353028825236291\n", + " w: 0.9896459247398505, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544918\n", + " nsecs: 224017381\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.05999999999999994\n", + " y: -0.64\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.12649723679630143\n", + " w: 0.9919669596730026, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544918\n", + " nsecs: 233902931\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.05999999999999994\n", + " y: -0.62\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.10911677189150902\n", + " w: 0.9940289382568178, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544918\n", + " nsecs: 263562440\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.31999999999999995\n", + " y: -0.06\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.4812091581666131\n", + " w: -0.8766058099833582, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544918\n", + " nsecs: 273334980\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.05999999999999994\n", + " y: -0.56\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.05530038574178813\n", + " w: 0.9984697628555457, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544918\n", + " nsecs: 294827461\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.05999999999999994\n", + " y: -0.52\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.01850900096213863\n", + " w: 0.9998286937687794, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544918\n", + " nsecs: 304959297\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.05999999999999994\n", + " y: -0.5\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 1.2246467991473532e-16\n", + " w: -1.0, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544918\n", + " nsecs: 314709424\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.36\n", + " y: -1.0\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.532573437384568\n", + " w: 0.8463837981627399, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544918\n", + " nsecs: 325293064\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.36\n", + " y: -0.98\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.5257311121191336\n", + " w: 0.85065080835204, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544918\n", + " nsecs: 335991859\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.05999999999999994\n", + " y: -0.48\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.018509000962138755\n", + " w: -0.9998286937687794, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544918\n", + " nsecs: 346140861\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.05999999999999994\n", + " y: -0.46\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.036961098084952626\n", + " w: -0.9993167051682638, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544918\n", + " nsecs: 356065750\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.36\n", + " y: -0.9199999999999999\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.5019268181932334\n", + " w: 0.8649100931185952, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544918\n", + " nsecs: 377432346\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.31999999999999995\n", + " y: -0.98\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.49806072645607874\n", + " w: 0.8671421525690256, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544918\n", + " nsecs: 397984027\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: -0.020000000000000018\n", + " y: -0.72\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.16966474960750313\n", + " w: 0.9855018380199112, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544918\n", + " nsecs: 408214569\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.05999999999999994\n", + " y: -0.42\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.07347291217220556\n", + " w: -0.9972972130598458, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544918\n", + " nsecs: 418574810\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.36\n", + " y: -0.06\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.5104644303570166\n", + " w: -0.8598988692516618, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544918\n", + " nsecs: 428881645\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.36\n", + " y: -0.03999999999999998\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.5183792016009997\n", + " w: -0.8551508658403557, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544918\n", + " nsecs: 438925266\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.05999999999999994\n", + " y: -0.4\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.09142755332923423\n", + " w: -0.9958117304451831, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544918\n", + " nsecs: 449546337\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.05999999999999994\n", + " y: -0.38\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.10911677189150912\n", + " w: -0.9940289382568177, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544918\n", + " nsecs: 459606885\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.05999999999999994\n", + " y: -0.36\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.12649723679630132\n", + " w: -0.9919669596730026, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544918\n", + " nsecs: 469818115\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.05999999999999994\n", + " y: -0.33999999999999997\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.14353028825236303\n", + " w: -0.9896459247398504, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544918\n", + " nsecs: 480182886\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.05999999999999994\n", + " y: -0.32\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.16018224300696732\n", + " w: -0.9870874576374967, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544918\n", + " nsecs: 490321397\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.05999999999999994\n", + " y: 0.33999999999999997\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.47918806782228074\n", + " w: -0.8777122510576854, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544918\n", + " nsecs: 501243829\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.76\n", + " y: -1.46\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.7630199824727257\n", + " w: 0.6463748961301957, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544918\n", + " nsecs: 511368751\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.76\n", + " y: -1.44\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.764133282892573\n", + " w: 0.6450583895864149, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544918\n", + " nsecs: 531534433\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.76\n", + " y: -1.3\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.7733421413379024\n", + " w: 0.6339889056055382, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544918\n", + " nsecs: 542391061\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.76\n", + " y: -1.28\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.7749013304032105\n", + " w: 0.6320822162815011, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544918\n", + " nsecs: 552552223\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.76\n", + " y: -1.26\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.7765341206443674\n", + " w: 0.6300752014443031, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544918\n", + " nsecs: 562627077\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.76\n", + " y: -1.24\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.7782457171509326\n", + " w: 0.6279598743042668, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544918\n", + " nsecs: 572496891\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.76\n", + " y: -1.22\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.7800418122827314\n", + " w: 0.6257273935913882, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544918\n", + " nsecs: 582713603\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.76\n", + " y: -1.2000000000000002\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.7819286417257463\n", + " w: 0.6233679485255313, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544918\n", + " nsecs: 593607664\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.76\n", + " y: -1.1800000000000002\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.783913048024316\n", + " w: 0.6208706251202633, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544918\n", + " nsecs: 604231595\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.76\n", + " y: -1.1600000000000001\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.7860025526744504\n", + " w: 0.6182232502820061, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544918\n", + " nsecs: 615185499\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.76\n", + " y: -1.1400000000000001\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.7882054380161092\n", + " w: 0.6154122094026356, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544918\n", + " nsecs: 626099348\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.76\n", + " y: -1.12\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.7905308403287533\n", + " w: 0.6124222321969667, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544918\n", + " nsecs: 635951280\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.76\n", + " y: -1.1\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.7929888557099438\n", + " w: 0.6092361403592484, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544918\n", + " nsecs: 656157970\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.76\n", + " y: -1.06\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.7983486481160277\n", + " w: 0.602195513144453, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544918\n", + " nsecs: 666541576\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.76\n", + " y: -1.04\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.8012765844860855\n", + " w: 0.5982941042282742, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544918\n", + " nsecs: 696901559\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.72\n", + " y: -0.020000000000000018\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.7882054380161092\n", + " w: -0.6154122094026356, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544918\n", + " nsecs: 706899642\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.76\n", + " y: -1.02\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.8043897838851272\n", + " w: 0.5941019067308558, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544918\n", + " nsecs: 717074871\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.72\n", + " y: -0.06\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.7947066772690753\n", + " w: -0.6069936549124264, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544918\n", + " nsecs: 727422475\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.76\n", + " y: -1.0\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.8077053073689017\n", + " w: 0.5895864113496071, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544918\n", + " nsecs: 737593412\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.42\n", + " y: -1.04\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.584710284663765\n", + " w: 0.8112421851755609, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544918\n", + " nsecs: 748543024\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.18\n", + " y: -1.02\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.4310817166804798\n", + " w: 0.9023128911546209, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544918\n", + " nsecs: 759326457\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.5599999999999999\n", + " y: 0.020000000000000018\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.6794495938313833\n", + " w: -0.7337221881900318, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544918\n", + " nsecs: 780078649\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.42\n", + " y: -1.02\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.5800385487693184\n", + " w: 0.8145890264063119, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544918\n", + " nsecs: 790158510\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.42\n", + " y: -1.0\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.5750132745107971\n", + " w: 0.818144079081656, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544918\n", + " nsecs: 812283277\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.76\n", + " y: -0.98\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.8112421851755609\n", + " w: 0.584710284663765, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544918\n", + " nsecs: 822262287\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.42\n", + " y: -0.96\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.5637378164623551\n", + " w: 0.8259537967043049, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544918\n", + " nsecs: 832731246\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.45999999999999996\n", + " y: -0.9199999999999999\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.5847102846637648\n", + " w: 0.8112421851755609, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544918\n", + " nsecs: 842995643\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.45999999999999996\n", + " y: -0.94\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.5902526335066423\n", + " w: 0.8072185755038553, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544918\n", + " nsecs: 853036403\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.18\n", + " y: -0.88\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.35948867915153393\n", + " w: 0.9331494465314146, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544918\n", + " nsecs: 863647460\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.18\n", + " y: -0.86\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.3469462477349362\n", + " w: 0.9378850149046248, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544918\n", + " nsecs: 873960256\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.18\n", + " y: -0.8400000000000001\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.333732774306416\n", + " w: 0.9426677226646422, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544918\n", + " nsecs: 884471654\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.18\n", + " y: -0.8200000000000001\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.3198189174888669\n", + " w: 0.9474786857846721, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544918\n", + " nsecs: 895127058\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.45999999999999996\n", + " y: -0.96\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.5953311617147652\n", + " w: 0.8034804340438839, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544918\n", + " nsecs: 906480073\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.42\n", + " y: -0.94\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.5573899686393252\n", + " w: 0.8302508192469624, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544918\n", + " nsecs: 917049169\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.42\n", + " y: -0.9199999999999999\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.5504910087462066\n", + " w: 0.8348410922382677, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544918\n", + " nsecs: 927591085\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.18\n", + " y: -0.74\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.2566679351570243\n", + " w: 0.9664996487646695, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544918\n", + " nsecs: 947772502\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.18\n", + " y: -0.7\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.2203854364245398\n", + " w: 0.9754128661300122, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544918\n", + " nsecs: 957824230\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.18\n", + " y: -0.6799999999999999\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.20106587226819733\n", + " w: 0.9795777228015289, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544918\n", + " nsecs: 968458414\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.18\n", + " y: -0.66\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.1809865534660407\n", + " w: 0.9834855705420817, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544918\n", + " nsecs: 979157924\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.18\n", + " y: -0.64\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.1601822430069672\n", + " w: 0.9870874576374967, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544918\n", + " nsecs: 989204168\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.18\n", + " y: -0.62\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.13870121188940068\n", + " w: 0.9903342737785114, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544919\n", + " nsecs: 20420312\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.18\n", + " y: -0.56\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.07088902009067935\n", + " w: 0.9974842088126424, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544919\n", + " nsecs: 31285047\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.18\n", + " y: -0.54\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.04745802042883704\n", + " w: 0.9988732333469429, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544919\n", + " nsecs: 41488409\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.18\n", + " y: -0.52\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.023789307215243066\n", + " w: 0.9997169943850204, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544919\n", + " nsecs: 51862955\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.18\n", + " y: -0.5\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 1.2246467991473532e-16\n", + " w: -1.0, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544919\n", + " nsecs: 62264919\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.18\n", + " y: -0.48\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.02378930721524297\n", + " w: -0.9997169943850204, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544919\n", + " nsecs: 82359075\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.18\n", + " y: -0.44\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.07088902009067946\n", + " w: -0.9974842088126424, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544919\n", + " nsecs: 103036642\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.18\n", + " y: -0.4\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.11660571451398305\n", + " w: -0.9931782857788845, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544919\n", + " nsecs: 113466262\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.18\n", + " y: -0.38\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.13870121188940082\n", + " w: -0.9903342737785114, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544919\n", + " nsecs: 133843421\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.18\n", + " y: -0.33999999999999997\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.1809865534660408\n", + " w: -0.9834855705420817, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544919\n", + " nsecs: 144020557\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.18\n", + " y: -0.32\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.20106587226819744\n", + " w: -0.9795777228015289, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544919\n", + " nsecs: 163890361\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.45999999999999996\n", + " y: -1.02\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.6082871552778866\n", + " w: 0.7937170381968226, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544919\n", + " nsecs: 173745393\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.45999999999999996\n", + " y: -1.04\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.6119795099577574\n", + " w: 0.790873617837808, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544919\n", + " nsecs: 183910846\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.76\n", + " y: -0.96\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.8150216638044884\n", + " w: 0.5794304855022417, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544919\n", + " nsecs: 194156885\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.12\n", + " y: -0.33999999999999997\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.16018224300696732\n", + " w: -0.9870874576374967, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544919\n", + " nsecs: 204169988\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.76\n", + " y: -0.94\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.8190674767950149\n", + " w: 0.5736971923032635, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544919\n", + " nsecs: 214705228\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.76\n", + " y: -0.9199999999999999\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.8234061353888457\n", + " w: 0.5674524968700076, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544919\n", + " nsecs: 235476016\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.39999999999999997\n", + " y: -0.94\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.5413857477339129\n", + " w: 0.8407743289079371, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544919\n", + " nsecs: 245808124\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.5599999999999999\n", + " y: -0.9199999999999999\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.6727521487784355\n", + " w: 0.7398679249122764, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544919\n", + " nsecs: 255650997\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.5599999999999999\n", + " y: -0.94\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.6743382882342814\n", + " w: 0.7384225572267273, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544919\n", + " nsecs: 265812635\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.5599999999999999\n", + " y: -0.96\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.6757848709593749\n", + " w: 0.7370989134318549, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544919\n", + " nsecs: 275789737\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.5599999999999999\n", + " y: -0.98\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.6771094889847062\n", + " w: 0.7358822867326472, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544919\n", + " nsecs: 286756038\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.39999999999999997\n", + " y: -0.96\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.5483036971357889\n", + " w: 0.8362792928843958, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544919\n", + " nsecs: 298326969\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.39999999999999997\n", + " y: -0.98\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.554700196225229\n", + " w: 0.8320502943378437, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544919\n", + " nsecs: 308969020\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.5599999999999999\n", + " y: -1.04\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.6804881756815059\n", + " w: 0.7327590618734483, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544919\n", + " nsecs: 319038152\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.5599999999999999\n", + " y: -1.06\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.6814517407755631\n", + " w: 0.7318630507095948, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544919\n", + " nsecs: 329315423\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.39999999999999997\n", + " y: -1.0\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.5606288093051838\n", + " w: 0.8280672304692729, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544919\n", + " nsecs: 339347362\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.39999999999999997\n", + " y: -1.02\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.5661364326251803\n", + " w: 0.8243115549684079, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544919\n", + " nsecs: 349482059\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.39999999999999997\n", + " y: -1.04\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.5712642314097768\n", + " w: 0.8207662139195284, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544919\n", + " nsecs: 359558582\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.39999999999999997\n", + " y: -1.06\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.5760484367663208\n", + " w: 0.8174155604703632, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544919\n", + " nsecs: 369482517\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.39999999999999997\n", + " y: -1.08\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.5805210231682381\n", + " w: 0.8142452589114058, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544919\n", + " nsecs: 379415988\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.39999999999999997\n", + " y: -1.1\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.584710284663765\n", + " w: 0.8112421851755609, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544919\n", + " nsecs: 389329671\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.39999999999999997\n", + " y: -1.12\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.5886413254594183\n", + " w: 0.8083943282590367, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544919\n", + " nsecs: 399363040\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.39999999999999997\n", + " y: -1.1400000000000001\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.5923364782216495\n", + " w: 0.805690695346529, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544919\n", + " nsecs: 409301280\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.39999999999999997\n", + " y: -1.1600000000000001\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.5958156613908069\n", + " w: 0.8031212222581566, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544919\n", + " nsecs: 419255733\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.39999999999999997\n", + " y: -1.1800000000000002\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.5990966850218961\n", + " w: 0.8006766900539662, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544919\n", + " nsecs: 429352521\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.3\n", + " y: 0.06000000000000005\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.5137015609692951\n", + " w: -0.8579689424785198, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544919\n", + " nsecs: 439219951\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.39999999999999997\n", + " y: -1.2000000000000002\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.602195513144453\n", + " w: 0.7983486481160277, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544919\n", + " nsecs: 449213981\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.12\n", + " y: -0.7\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.19611613513818393\n", + " w: 0.9805806756909202, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544919\n", + " nsecs: 459560871\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.12\n", + " y: -0.72\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.2132313029385177\n", + " w: 0.9770017458772231, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544919\n", + " nsecs: 469874858\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.12\n", + " y: -0.74\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.2297529205473612\n", + " w: 0.9732489894677302, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544919\n", + " nsecs: 479789495\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.72\n", + " y: -0.9199999999999999\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.7983486481160277\n", + " w: 0.602195513144453, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544919\n", + " nsecs: 489479780\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.3\n", + " y: -0.06\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.4672596576628944\n", + " w: -0.8841201345522873, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544919\n", + " nsecs: 499516248\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.72\n", + " y: -0.94\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.7947066772690754\n", + " w: 0.6069936549124263, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544919\n", + " nsecs: 509546995\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.72\n", + " y: -0.96\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.7913349155531438\n", + " w: 0.6113829008293401, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544919\n", + " nsecs: 519337415\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.72\n", + " y: -0.98\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.7882054380161092\n", + " w: 0.6154122094026356, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544919\n", + " nsecs: 539964437\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.72\n", + " y: -1.02\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.7825789118992277\n", + " w: 0.6225514008101024, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544919\n", + " nsecs: 550527572\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.72\n", + " y: -1.04\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.7800418122827314\n", + " w: 0.6257273935913882, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544919\n", + " nsecs: 560472249\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.72\n", + " y: -1.06\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.77766608796156\n", + " w: 0.6286775450376476, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544919\n", + " nsecs: 580207109\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.39999999999999997\n", + " y: -1.22\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.6051264893449573\n", + " w: 0.7961293436955124, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544919\n", + " nsecs: 590407609\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.39999999999999997\n", + " y: -1.24\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.6079025311911546\n", + " w: 0.7940116577049655, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544919\n", + " nsecs: 621572971\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.3\n", + " y: -0.96\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.47630463962314995\n", + " w: 0.8792803251941108, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544919\n", + " nsecs: 631641149\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.3\n", + " y: -0.98\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.4847685323929452\n", + " w: 0.8746424812468178, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544919\n", + " nsecs: 641553401\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.39999999999999997\n", + " y: -1.28\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.6130353373714668\n", + " w: 0.790055488642318, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544919\n", + " nsecs: 653319358\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.39999999999999997\n", + " y: -1.42\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.6275230496439778\n", + " w: 0.7785979849482799, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544919\n", + " nsecs: 663541078\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.39999999999999997\n", + " y: -1.44\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.6292425428779992\n", + " w: 0.7772089952081289, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544919\n", + " nsecs: 683467149\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.39999999999999997\n", + " y: -1.48\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.6324713384826219\n", + " w: 0.7745837630611687, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544919\n", + " nsecs: 693924903\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.3\n", + " y: -1.1\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.5257311121191336\n", + " w: 0.85065080835204, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544919\n", + " nsecs: 704140663\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.39999999999999997\n", + " y: -1.5\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.6339889056055381\n", + " w: 0.7733421413379024, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544919\n", + " nsecs: 713812112\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.6599999999999999\n", + " y: -1.06\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.7438189039121905\n", + " w: 0.6683812072334675, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544919\n", + " nsecs: 723740100\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.6599999999999999\n", + " y: -1.04\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.7451280178851304\n", + " w: 0.6669214623646302, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544919\n", + " nsecs: 733844518\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.39999999999999997\n", + " y: -1.52\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.6354469054448959\n", + " w: 0.7721445657132514, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544919\n", + " nsecs: 744749307\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.76\n", + " y: -0.06\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.819067476795015\n", + " w: -0.5736971923032633, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544919\n", + " nsecs: 774046421\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.6599999999999999\n", + " y: -0.94\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.7533635260394922\n", + " w: 0.6576042865077321, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544919\n", + " nsecs: 783934116\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.6599999999999999\n", + " y: -0.9199999999999999\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.7554539549957063\n", + " w: 0.655201741360129, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544919\n", + " nsecs: 794060468\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.76\n", + " y: -0.03999999999999998\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.8150216638044883\n", + " w: -0.5794304855022419, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544919\n", + " nsecs: 804785490\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.76\n", + " y: -0.020000000000000018\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.8112421851755609\n", + " w: -0.5847102846637648, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544919\n", + " nsecs: 825284957\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.42\n", + " y: -0.03999999999999998\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.5637378164623552\n", + " w: -0.8259537967043047, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544919\n", + " nsecs: 845585823\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.42\n", + " y: 0.0\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.5750132745107973\n", + " w: -0.8181440790816558, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544919\n", + " nsecs: 856135606\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.76\n", + " y: 0.020000000000000018\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.8043897838851272\n", + " w: -0.5941019067308557, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544919\n", + " nsecs: 876502752\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.76\n", + " y: 0.06000000000000005\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.7983486481160278\n", + " w: -0.6021955131444529, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544919\n", + " nsecs: 886613845\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.76\n", + " y: 0.07999999999999996\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.7955906604925091\n", + " w: -0.6058345491444782, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544919\n", + " nsecs: 896639585\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.76\n", + " y: 0.09999999999999998\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.7929888557099438\n", + " w: -0.6092361403592484, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544919\n", + " nsecs: 907559156\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.6\n", + " y: -1.06\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.7071067811865475\n", + " w: 0.7071067811865476, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544919\n", + " nsecs: 927424430\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.76\n", + " y: 0.12\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.7905308403287534\n", + " w: -0.6124222321969663, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544919\n", + " nsecs: 937479496\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.76\n", + " y: 0.14\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.7882054380161092\n", + " w: -0.6154122094026356, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544919\n", + " nsecs: 957934379\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.6\n", + " y: -0.96\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.7071067811865475\n", + " w: 0.7071067811865476, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544919\n", + " nsecs: 977858066\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.6\n", + " y: -0.9199999999999999\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.7071067811865475\n", + " w: 0.7071067811865476, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544919\n", + " nsecs: 987823247\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.76\n", + " y: 0.16000000000000003\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.7860025526744504\n", + " w: -0.618223250282006, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544919\n", + " nsecs: 997573375\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.76\n", + " y: 0.18000000000000005\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.783913048024316\n", + " w: -0.6208706251202633, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544920\n", + " nsecs: 7592201\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.76\n", + " y: 0.20000000000000007\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.7819286417257465\n", + " w: -0.623367948525531, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544920\n", + " nsecs: 27238607\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.76\n", + " y: 0.24\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.7782457171509329\n", + " w: -0.6279598743042666, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544920\n", + " nsecs: 37187337\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.76\n", + " y: 0.26\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.7765341206443676\n", + " w: -0.6300752014443028, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544920\n", + " nsecs: 57217121\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.76\n", + " y: 0.4\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.7664963583466964\n", + " w: -0.6422486532809958, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544920\n", + " nsecs: 67085981\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.76\n", + " y: 0.42000000000000004\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.7652911781639873\n", + " w: -0.6436842491659838, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544920\n", + " nsecs: 77337503\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.52\n", + " y: -1.06\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.6552017413601289\n", + " w: 0.7554539549957063, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544920\n", + " nsecs: 87342262\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.52\n", + " y: -1.04\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.6532424277825721\n", + " w: 0.7571488166435519, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544920\n", + " nsecs: 97246408\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.76\n", + " y: 0.44000000000000006\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.764133282892573\n", + " w: -0.6450583895864149, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544920\n", + " nsecs: 107070446\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.76\n", + " y: 0.45999999999999996\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.7630199824727258\n", + " w: -0.6463748961301956, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544920\n", + " nsecs: 117566823\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.52\n", + " y: -0.98\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.6463748961301958\n", + " w: 0.7630199824727257, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544920\n", + " nsecs: 127794265\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.52\n", + " y: -0.96\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.6436842491659837\n", + " w: 0.7652911781639874, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544920\n", + " nsecs: 137711286\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.52\n", + " y: -0.94\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.6407474392457675\n", + " w: 0.767751730118527, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544920\n", + " nsecs: 150225162\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.52\n", + " y: -0.9199999999999999\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.6375295648477821\n", + " w: 0.7704258912737796, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544920\n", + " nsecs: 160764455\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.76\n", + " y: 0.48\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.7619487840078729\n", + " w: -0.647637283167765, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544920\n", + " nsecs: 170743227\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.07999999999999996\n", + " y: -1.4\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.4998611817921905\n", + " w: 0.8661055356810247, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544920\n", + " nsecs: 180782556\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.07999999999999996\n", + " y: -1.38\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.4956161255817646\n", + " w: 0.8685416835496848, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544920\n", + " nsecs: 201177597\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.07999999999999996\n", + " y: -1.3399999999999999\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.4866443184625216\n", + " w: 0.8736001987798239, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544920\n", + " nsecs: 213806390\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.07999999999999996\n", + " y: -1.32\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.48190142905041683\n", + " w: 0.8762254348506247, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544920\n", + " nsecs: 223469972\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.8\n", + " y: 0.09999999999999998\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.8112421851755609\n", + " w: -0.5847102846637648, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544920\n", + " nsecs: 243908166\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.07999999999999996\n", + " y: -1.28\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.4718579255320242\n", + " w: 0.8816745987679439, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544920\n", + " nsecs: 263970375\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.07999999999999996\n", + " y: -1.1\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.4153730020007066\n", + " w: 0.9096511799634632, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544920\n", + " nsecs: 273994445\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.07999999999999996\n", + " y: -1.08\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.4077100588947825\n", + " w: 0.9131114432948549, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544920\n", + " nsecs: 284109830\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.6599999999999999\n", + " y: -0.06\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.7533635260394923\n", + " w: -0.657604286507732, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544920\n", + " nsecs: 294022321\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.8\n", + " y: -0.020000000000000018\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.8320502943378438\n", + " w: -0.5547001962252289, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544920\n", + " nsecs: 326006412\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.6599999999999999\n", + " y: 0.020000000000000018\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.7465333575886381\n", + " w: -0.6653479886551357, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544920\n", + " nsecs: 337008714\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.07999999999999996\n", + " y: -1.06\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.39971796346469235\n", + " w: 0.9166381781726305, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544920\n", + " nsecs: 347310543\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.07999999999999996\n", + " y: -1.04\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.39138108854039505\n", + " w: 0.9202286908877246, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544920\n", + " nsecs: 358036518\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.07999999999999996\n", + " y: -1.02\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.3826834323650898\n", + " w: 0.9238795325112867, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544920\n", + " nsecs: 370610475\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.07999999999999996\n", + " y: -1.0\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.3736087091451055\n", + " w: 0.9275864016095363, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544920\n", + " nsecs: 381522893\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.07999999999999996\n", + " y: -0.98\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.3641404642253537\n", + " w: 0.9313440407893014, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544920\n", + " nsecs: 391707181\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.07999999999999996\n", + " y: -0.96\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.3542622175095866\n", + " w: 0.9351461282843395, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544920\n", + " nsecs: 402300357\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.07999999999999996\n", + " y: -0.94\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.34395763883862607\n", + " w: 0.9389851663815341, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544920\n", + " nsecs: 412396192\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.07999999999999996\n", + " y: -0.9199999999999999\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.33321075897716623\n", + " w: 0.9428523691977768, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544920\n", + " nsecs: 422230243\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.07999999999999996\n", + " y: -0.9\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.32200621957921877\n", + " w: 0.9467375531541463, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544920\n", + " nsecs: 432636737\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.62\n", + " y: 0.020000000000000018\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.7205668331602575\n", + " w: -0.6933854908702645, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544920\n", + " nsecs: 442850828\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.62\n", + " y: 0.0\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.7210991742988173\n", + " w: -0.6928318560989846, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544920\n", + " nsecs: 473550319\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.09999999999999998\n", + " y: -0.33999999999999997\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.15423335048016681\n", + " w: -0.9880344496016634, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544920\n", + " nsecs: 483459949\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.09999999999999998\n", + " y: -0.36\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.13608082209815303\n", + " w: -0.9906977388977382, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544920\n", + " nsecs: 493614435\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.09999999999999998\n", + " y: -0.38\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.11750042131729284\n", + " w: -0.993072832671531, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544920\n", + " nsecs: 504096269\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.27999999999999997\n", + " y: -0.9199999999999999\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.44382247843994094\n", + " w: 0.8961147290561785, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544920\n", + " nsecs: 513952732\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.27999999999999997\n", + " y: -0.94\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.453777645066917\n", + " w: 0.8911149470396753, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544920\n", + " nsecs: 523840188\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.27999999999999997\n", + " y: -0.96\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.46310663556107695\n", + " w: 0.8863025691598214, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544920\n", + " nsecs: 533734798\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.09999999999999998\n", + " y: -0.4\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.09853761796664212\n", + " w: -0.9951333266680702, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544920\n", + " nsecs: 544054985\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.6\n", + " y: -0.06\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.7071067811865476\n", + " w: -0.7071067811865475, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544920\n", + " nsecs: 553883552\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.62\n", + " y: -0.06\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.7229825934691132\n", + " w: -0.6908662457673518, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544920\n", + " nsecs: 563676357\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.8\n", + " y: -0.9199999999999999\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.8455570886676865\n", + " w: 0.5338850155265888, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544920\n", + " nsecs: 573505640\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.6\n", + " y: 0.0\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.7071067811865476\n", + " w: -0.7071067811865475, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544920\n", + " nsecs: 583408832\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.6\n", + " y: 0.020000000000000018\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.7071067811865476\n", + " w: -0.7071067811865475, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544920\n", + " nsecs: 593615531\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.7\n", + " y: 0.020000000000000018\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.7709887786635176\n", + " w: -0.6368487286435748, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544920\n", + " nsecs: 612910509\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.7\n", + " y: -0.020000000000000018\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.7758718496349772\n", + " w: -0.6308905395898715, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544920\n", + " nsecs: 622579574\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.8\n", + " y: -0.94\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.8407743289079371\n", + " w: 0.5413857477339129, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544920\n", + " nsecs: 632315635\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.7\n", + " y: -0.06\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.7815436979430416\n", + " w: -0.6238505014869474, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544920\n", + " nsecs: 642050027\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.07999999999999996\n", + " y: -0.8400000000000001\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.2855086566344833\n", + " w: 0.9583761302259008, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544920\n", + " nsecs: 651688337\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.07999999999999996\n", + " y: -0.8200000000000001\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.2723432423390162\n", + " w: 0.9622001654293517, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544920\n", + " nsecs: 661351203\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.8\n", + " y: -1.0\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.8280672304692729\n", + " w: 0.5606288093051838, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544920\n", + " nsecs: 671063661\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.8\n", + " y: -1.02\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.8243115549684079\n", + " w: 0.5661364326251804, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544920\n", + " nsecs: 680626392\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.07999999999999996\n", + " y: -0.8\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.2586642746412806\n", + " w: 0.9659672836200511, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544920\n", + " nsecs: 690305233\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.07999999999999996\n", + " y: -0.78\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.24446768710590863\n", + " w: 0.9696574394914359, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544920\n", + " nsecs: 699806213\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.07999999999999996\n", + " y: -0.76\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.2297529205473612\n", + " w: 0.9732489894677302, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544920\n", + " nsecs: 719159364\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.07999999999999996\n", + " y: -0.72\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.198787259314375\n", + " w: 0.9800426651601856, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544920\n", + " nsecs: 728794574\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.8\n", + " y: -1.1400000000000001\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.805690695346529\n", + " w: 0.5923364782216496, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544920\n", + " nsecs: 739019632\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.07999999999999996\n", + " y: -0.7\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.18255737974256264\n", + " w: 0.9831952009146149, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544920\n", + " nsecs: 758497953\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.07999999999999996\n", + " y: -0.66\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.14869598393710892\n", + " w: 0.9888829578676007, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544920\n", + " nsecs: 768382310\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.07999999999999996\n", + " y: -0.64\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.13111872764660712\n", + " w: 0.9913666724579432, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544920\n", + " nsecs: 778136730\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.020000000000000018\n", + " y: -0.8200000000000001\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.24942164698879468\n", + " w: 0.968394982439189, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544920\n", + " nsecs: 797852516\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.54\n", + " y: 0.020000000000000018\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.6653479886551358\n", + " w: -0.746533357588638, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544920\n", + " nsecs: 807753801\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.54\n", + " y: 0.0\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.6636470369788332\n", + " w: -0.7480458611002506, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544920\n", + " nsecs: 817374706\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.07999999999999996\n", + " y: -0.6\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.09485133899780393\n", + " w: 0.9954914482256106, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544920\n", + " nsecs: 827094316\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.07999999999999996\n", + " y: -0.58\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.07625058147116914\n", + " w: 0.997088686539622, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544920\n", + " nsecs: 837395668\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.54\n", + " y: -0.06\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.6576042865077321\n", + " w: -0.7533635260394922, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544920\n", + " nsecs: 848101377\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.09999999999999998\n", + " y: -0.42\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.07924445748219482\n", + " w: -0.9968552131369695, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544920\n", + " nsecs: 897163629\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.07999999999999996\n", + " y: -0.48\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.01922011145500681\n", + " w: -0.9998152765964606, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544920\n", + " nsecs: 907011747\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.07999999999999996\n", + " y: -0.46\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.03837651950358736\n", + " w: -0.9992633500488202, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544920\n", + " nsecs: 916730880\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.07999999999999996\n", + " y: -0.44\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.057406724906011355\n", + " w: -0.9983508741597643, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544920\n", + " nsecs: 926568746\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.07999999999999996\n", + " y: -0.42\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.07625058147116927\n", + " w: -0.997088686539622, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544920\n", + " nsecs: 937285184\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.07999999999999996\n", + " y: -0.4\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.09485133899780428\n", + " w: -0.9954914482256106, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544920\n", + " nsecs: 947034358\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.07999999999999996\n", + " y: -0.38\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.11315653826752582\n", + " w: -0.9935771725675414, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544920\n", + " nsecs: 957026481\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.07999999999999996\n", + " y: -0.36\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.13111872764660726\n", + " w: -0.9913666724579432, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544920\n", + " nsecs: 967617511\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.21999999999999997\n", + " y: -0.9199999999999999\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.4056394187149922\n", + " w: 0.9140331842906817, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544920\n", + " nsecs: 977944612\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.07999999999999996\n", + " y: -0.33999999999999997\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.14869598393710906\n", + " w: -0.9888829578676007, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544920\n", + " nsecs: 988276481\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.78\n", + " y: -1.46\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.769509108149535\n", + " w: 0.6386358371363977, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544920\n", + " nsecs: 998299598\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.78\n", + " y: -1.44\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.7707373971684058\n", + " w: 0.6371529365906361, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544921\n", + " nsecs: 8562088\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.78\n", + " y: -1.42\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.7720141211097296\n", + " w: 0.6356053782081865, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544921\n", + " nsecs: 18221139\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.7\n", + " y: -0.9199999999999999\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.7847357922594201\n", + " w: 0.6198304093435398, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544921\n", + " nsecs: 28006315\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.7\n", + " y: -0.94\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.7815436979430415\n", + " w: 0.6238505014869475, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544921\n", + " nsecs: 37898063\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.7\n", + " y: -0.96\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.7785979849482798\n", + " w: 0.6275230496439778, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544921\n", + " nsecs: 57746171\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.07999999999999996\n", + " y: 0.30000000000000004\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.476975706616483\n", + " w: -0.8789164779987384, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544921\n", + " nsecs: 67290544\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.7\n", + " y: -1.02\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.7709887786635173\n", + " w: 0.636848728643575, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544921\n", + " nsecs: 77006340\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.7\n", + " y: -1.04\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.7687942703292954\n", + " w: 0.6394961844365034, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544921\n", + " nsecs: 86667060\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.7\n", + " y: -1.06\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.7667433203111904\n", + " w: 0.6419537995511603, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544921\n", + " nsecs: 96265316\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.07999999999999996\n", + " y: 0.32000000000000006\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.48190142905041666\n", + " w: -0.8762254348506247, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544921\n", + " nsecs: 105965852\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.78\n", + " y: -1.28\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.7825789118992277\n", + " w: 0.6225514008101024, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544921\n", + " nsecs: 115576744\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.78\n", + " y: -1.26\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.7843680207272645\n", + " w: 0.6202957424167875, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544921\n", + " nsecs: 125284671\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.78\n", + " y: -1.24\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.78624155930207\n", + " w: 0.6179192588245245, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544921\n", + " nsecs: 135140895\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.38\n", + " y: -1.02\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.5524309953122208\n", + " w: 0.8335586334615874, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544921\n", + " nsecs: 144938230\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.38\n", + " y: -1.0\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.5464711272034338\n", + " w: 0.8374779442665988, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544921\n", + " nsecs: 154725313\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.38\n", + " y: -0.98\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.5400672594718117\n", + " w: 0.8416218600099494, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544921\n", + " nsecs: 183697938\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.38\n", + " y: -0.94\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.5257311121191336\n", + " w: 0.85065080835204, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544921\n", + " nsecs: 194594383\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.38\n", + " y: -0.9199999999999999\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.5176837863645347\n", + " w: 0.8555720293086252, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544921\n", + " nsecs: 204714298\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.52\n", + " y: 0.0\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.6488487878132037\n", + " w: -0.7609173743274208, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544921\n", + " nsecs: 214483737\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.52\n", + " y: 0.020000000000000018\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.6511308684688737\n", + " w: -0.7589654749242356, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544921\n", + " nsecs: 244819402\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.48\n", + " y: -1.02\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.6225514008101024\n", + " w: 0.7825789118992277, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544921\n", + " nsecs: 255036592\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.78\n", + " y: -1.2000000000000002\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.7902661070204828\n", + " w: 0.6127638044913315, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544921\n", + " nsecs: 265106439\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.54\n", + " y: -0.9199999999999999\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.6552017413601289\n", + " w: 0.7554539549957063, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544921\n", + " nsecs: 275486230\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.54\n", + " y: -0.94\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.657604286507732\n", + " w: 0.7533635260394923, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544921\n", + " nsecs: 285556316\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.54\n", + " y: -0.96\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.6597957320005307\n", + " w: 0.7514450026674501, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544921\n", + " nsecs: 295557022\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.54\n", + " y: -0.98\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.6618025632357402\n", + " w: 0.7496781758158658, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544921\n", + " nsecs: 305361986\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.09999999999999998\n", + " y: -0.62\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.11750042131729249\n", + " w: 0.9930728326715311, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544921\n", + " nsecs: 314964056\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.09999999999999998\n", + " y: -0.64\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.1360808220981529\n", + " w: 0.9906977388977382, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544921\n", + " nsecs: 324617624\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.54\n", + " y: -1.04\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.6669214623646302\n", + " w: 0.7451280178851305, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544921\n", + " nsecs: 334374666\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.54\n", + " y: -1.06\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.6683812072334675\n", + " w: 0.7438189039121905, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544921\n", + " nsecs: 344164848\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.09999999999999998\n", + " y: -0.66\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.15423335048016673\n", + " w: 0.9880344496016635, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544921\n", + " nsecs: 353968620\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.09999999999999998\n", + " y: -0.6799999999999999\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.1719194406273956\n", + " w: 0.9851110119851283, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544921\n", + " nsecs: 363894939\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.09999999999999998\n", + " y: -0.7\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.18910752115495127\n", + " w: 0.9819563867314218, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544921\n", + " nsecs: 373680114\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.09999999999999998\n", + " y: -0.72\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.205772893716877\n", + " w: 0.9785997732532861, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544921\n", + " nsecs: 383259534\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.09999999999999998\n", + " y: -0.74\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.22189743411284238\n", + " w: 0.9750700122217567, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544921\n", + " nsecs: 393896102\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.48\n", + " y: -0.98\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.6154122094026356\n", + " w: 0.7882054380161092, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544921\n", + " nsecs: 403790950\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.48\n", + " y: -0.96\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.61138290082934\n", + " w: 0.791334915553144, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544921\n", + " nsecs: 413312673\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.48\n", + " y: -0.94\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.6069936549124263\n", + " w: 0.7947066772690754, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544921\n", + " nsecs: 422859430\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.62\n", + " y: -0.9199999999999999\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.7237282464487099\n", + " w: 0.6900850855454531, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544921\n", + " nsecs: 432488441\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.62\n", + " y: -0.94\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.7229825934691132\n", + " w: 0.6908662457673519, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544921\n", + " nsecs: 442560195\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.62\n", + " y: -0.96\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.7223009152272711\n", + " w: 0.6915789093529722, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544921\n", + " nsecs: 452620267\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.62\n", + " y: -0.98\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.7216753233664641\n", + " w: 0.6922317008371615, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544921\n", + " nsecs: 462723493\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.78\n", + " y: -1.1800000000000002\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.7924306153589356\n", + " w: 0.6099620642645399, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544921\n", + " nsecs: 472694635\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.78\n", + " y: -1.1600000000000001\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.7947066772690754\n", + " w: 0.6069936549124263, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544921\n", + " nsecs: 482583999\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.43999999999999995\n", + " y: -1.04\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.5982941042282742\n", + " w: 0.8012765844860855, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544921\n", + " nsecs: 492875099\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.25999999999999995\n", + " y: -0.9199999999999999\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.4305820312855818\n", + " w: 0.9025514469181146, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544921\n", + " nsecs: 503608465\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.25999999999999995\n", + " y: -0.94\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.44076779540038685\n", + " w: 0.8976211620376843, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544921\n", + " nsecs: 545543432\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.43999999999999995\n", + " y: -0.96\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.5794304855022417\n", + " w: 0.8150216638044885, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544921\n", + " nsecs: 556905508\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.43999999999999995\n", + " y: -0.94\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.5736971923032635\n", + " w: 0.8190674767950149, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544921\n", + " nsecs: 579474687\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.62\n", + " y: -1.06\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.7196150118335541\n", + " w: 0.6943732675901296, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544921\n", + " nsecs: 590476512\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.78\n", + " y: -1.1400000000000001\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.7971027464882692\n", + " w: 0.6038436979391754, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544921\n", + " nsecs: 600560188\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.78\n", + " y: -1.12\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.7996280994512247\n", + " w: 0.6004955475005809, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544921\n", + " nsecs: 611992359\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.78\n", + " y: -1.1\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.8022929282893952\n", + " w: 0.5969305296404492, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544921\n", + " nsecs: 623099565\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.78\n", + " y: -1.08\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.8051084445192626\n", + " w: 0.5931276359804638, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544921\n", + " nsecs: 633123397\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.78\n", + " y: -1.06\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.8080869942070349\n", + " w: 0.5890631628216448, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544921\n", + " nsecs: 655219793\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.78\n", + " y: -1.02\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.8145890264063119\n", + " w: 0.5800385487693183, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544921\n", + " nsecs: 665919780\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.78\n", + " y: -1.0\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.818144079081656\n", + " w: 0.575013274510797, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544921\n", + " nsecs: 676297664\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.78\n", + " y: -0.98\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.8219256175556252\n", + " w: 0.5695948377626013, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544921\n", + " nsecs: 686551332\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.48\n", + " y: 0.020000000000000018\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.6225514008101027\n", + " w: -0.7825789118992276, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544921\n", + " nsecs: 697294473\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.48\n", + " y: 0.0\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.6191231894884393\n", + " w: -0.7852938788999072, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544921\n", + " nsecs: 707584142\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.48\n", + " y: -0.020000000000000018\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.6154122094026357\n", + " w: -0.7882054380161091, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544921\n", + " nsecs: 717669010\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.78\n", + " y: -0.96\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.8259537967043049\n", + " w: 0.563737816462355, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544921\n", + " nsecs: 729904651\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.48\n", + " y: -0.06\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.6069936549124266\n", + " w: -0.7947066772690753, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544921\n", + " nsecs: 755266666\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.78\n", + " y: -0.9199999999999999\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.8348410922382677\n", + " w: 0.5504910087462066, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544921\n", + " nsecs: 765379905\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.38\n", + " y: -0.06\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.5257311121191337\n", + " w: -0.8506508083520399, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544921\n", + " nsecs: 775438785\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.0\n", + " y: -0.78\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.2165835404696473\n", + " w: 0.9762640882454054, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544921\n", + " nsecs: 785464763\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.6799999999999999\n", + " y: 0.020000000000000018\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.7589654749242356\n", + " w: -0.6511308684688735, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544921\n", + " nsecs: 797777175\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.6799999999999999\n", + " y: 0.0\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.7609173743274209\n", + " w: -0.6488487878132035, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544921\n", + " nsecs: 810024023\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.38\n", + " y: -0.03999999999999998\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.5331718778667884\n", + " w: -0.8460069436192604, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544921\n", + " nsecs: 821498632\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.38\n", + " y: -0.020000000000000018\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.5400672594718116\n", + " w: -0.8416218600099494, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544921\n", + " nsecs: 832209587\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.6799999999999999\n", + " y: -0.06\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.767751730118527\n", + " w: -0.6407474392457674, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544921\n", + " nsecs: 842942476\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.07999999999999996\n", + " y: 0.33999999999999997\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.4866443184625217\n", + " w: -0.8736001987798239, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544921\n", + " nsecs: 854440927\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.07999999999999996\n", + " y: 0.36\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.49121312130825956\n", + " w: -0.8710394190015727, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544921\n", + " nsecs: 864692211\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.38\n", + " y: 0.48\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.6248846524332634\n", + " w: -0.780717087781073, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544921\n", + " nsecs: 874951601\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.38\n", + " y: 0.45999999999999996\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.6231467899582747\n", + " w: -0.7821049022763493, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544921\n", + " nsecs: 885563135\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.38\n", + " y: 0.44000000000000006\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.6213354700248949\n", + " w: -0.7835446596646187, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544921\n", + " nsecs: 897155761\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.38\n", + " y: 0.42000000000000004\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.6194460375118611\n", + " w: -0.7850392388988298, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544921\n", + " nsecs: 907792329\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.38\n", + " y: 0.4\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.6174734445800121\n", + " w: -0.7865917271612352, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544921\n", + " nsecs: 917936801\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.38\n", + " y: 0.38\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.6154122094026357\n", + " w: -0.7882054380161091, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544921\n", + " nsecs: 928446054\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.48\n", + " y: -0.9199999999999999\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.6021955131444529\n", + " w: 0.7983486481160278, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544921\n", + " nsecs: 961369752\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.38\n", + " y: 0.24\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.5979254685648697\n", + " w: -0.8015517039102849, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544921\n", + " nsecs: 973284721\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.38\n", + " y: 0.21999999999999997\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.5948871592163426\n", + " w: -0.8038092235098512, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544921\n", + " nsecs: 987850427\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.38\n", + " y: 0.20000000000000007\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.5916812500238643\n", + " w: -0.8061720029684716, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544921\n", + " nsecs: 998610258\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.38\n", + " y: 0.18000000000000005\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.5882940228258898\n", + " w: -0.8086471064112771, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544922\n", + " nsecs: 8282661\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.38\n", + " y: 0.16000000000000003\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.5847102846637651\n", + " w: -0.8112421851755608, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544922\n", + " nsecs: 27345895\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.6799999999999999\n", + " y: -1.06\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.7554539549957063\n", + " w: 0.655201741360129, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544922\n", + " nsecs: 37099599\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.6799999999999999\n", + " y: -1.04\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.7571488166435519\n", + " w: 0.6532424277825721, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544922\n", + " nsecs: 67073106\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.6799999999999999\n", + " y: -0.98\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.7630199824727256\n", + " w: 0.6463748961301958, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544922\n", + " nsecs: 86748838\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.6799999999999999\n", + " y: -0.94\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.7677517301185269\n", + " w: 0.6407474392457675, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544922\n", + " nsecs: 105825424\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.43999999999999995\n", + " y: -0.020000000000000018\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.5847102846637651\n", + " w: -0.8112421851755608, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544922\n", + " nsecs: 115547418\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.43999999999999995\n", + " y: 0.0\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.5895864113496071\n", + " w: -0.8077053073689017, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544922\n", + " nsecs: 134811162\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.78\n", + " y: 0.020000000000000018\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.814589026406312\n", + " w: -0.5800385487693182, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544922\n", + " nsecs: 144512414\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.78\n", + " y: 0.040000000000000036\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.8112421851755609\n", + " w: -0.5847102846637648, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544922\n", + " nsecs: 154634714\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.78\n", + " y: 0.06000000000000005\n", + " z: 0.0\n", + " orientation: \n", + " x: -0.0\n", + " y: 0.0\n", + " z: 0.8080869942070349\n", + " w: -0.5890631628216447, reachable_arms=None)\n", + "CostmapLocation.Location(pose=header: \n", + " seq: 0\n", + " stamp: \n", + " secs: 1706544922\n", + " nsecs: 164654016\n", + " frame_id: \"map\"\n", + "pose: \n", + " position: \n", + " x: 0.15999999999999998\n", + " y: -0.62\n", + " z: 0.0\n", + " orientation: \n", + " x: 0.0\n", + " y: 0.0\n", + " z: 0.13273315102540856\n", + " w: 0.9911518100769761, reachable_arms=None)\n" + ] + } + ], "source": [ "from pycram.designators.location_designator import *\n", "from pycram.designators.object_designator import *\n", @@ -835,13 +8602,18 @@ "metadata": {}, "source": [ "# Action Designator\n", - "Action Designator are used to describe high-level actions. Action Designator are usually composed of other Designators to describe the high-level action in detail. " + "Action Designators are used to describe high-level actions. Action Designators are usually composed of other Designators to describe the high-level action in detail. " ] }, { "cell_type": "code", - "execution_count": 29, - "metadata": {}, + "execution_count": 27, + "metadata": { + "ExecuteTime": { + "end_time": "2024-01-29T16:15:22.690059907Z", + "start_time": "2024-01-29T16:15:22.178420266Z" + } + }, "outputs": [], "source": [ "from pycram.designators.action_designator import *\n", @@ -856,13 +8628,18 @@ "metadata": {}, "source": [ "# Making a simple plan\n", - "To get familiar with the PyCRAM Framework we will write a simple pick and place plan. This plan will let the robot grab a cereal box from the kitchen counter and place it on the kitchen island. This is a simple pick and place plan." + "To get familiar with the PyCRAM Framework we will write a simple pick and place plan. This plan will let the robot grasp a cereal box from the kitchen counter and place it on the kitchen island. This is a simple pick and place plan." ] }, { "cell_type": "code", - "execution_count": 30, - "metadata": {}, + "execution_count": 28, + "metadata": { + "ExecuteTime": { + "end_time": "2024-01-29T16:15:22.784167007Z", + "start_time": "2024-01-29T16:15:22.739698077Z" + } + }, "outputs": [], "source": [ "from pycram.designators.object_designator import *\n", @@ -871,8 +8648,13 @@ }, { "cell_type": "code", - "execution_count": 31, - "metadata": {}, + "execution_count": 29, + "metadata": { + "ExecuteTime": { + "end_time": "2024-01-29T16:15:37.008203353Z", + "start_time": "2024-01-29T16:15:22.784090487Z" + } + }, "outputs": [], "source": [ "cereal_desig = ObjectDesignatorDescription(names=[\"cereal\"])\n", @@ -911,28 +8693,45 @@ "metadata": {}, "source": [ "# Task Trees\n", - "Task trees are a hirachical representation of all Actions involved in a plan. The Task tree can later be used to inspect and restructre the execution order of Actions in the plan." + "Task trees are a hierarchical representation of all Actions involved in a plan. The Task tree can later be used to inspect and restructure the execution order of Actions in the plan." ] }, { "cell_type": "code", - "execution_count": 32, - "metadata": {}, + "execution_count": 30, + "metadata": { + "ExecuteTime": { + "end_time": "2024-01-29T16:15:37.015721112Z", + "start_time": "2024-01-29T16:15:37.010004750Z" + } + }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "no_operation()\n", - "├── perform(ParkArmsAction, )\n", - "├── perform(ParkArmsAction, )\n", - "├── perform(MoveTorsoAction, )\n", - "├── perform(NavigateAction, )\n", - "├── perform(PickUpAction, )\n", - "├── perform(ParkArmsAction, )\n", - "├── perform(NavigateAction, )\n", - "├── perform(PlaceAction, )\n", - "└── perform(ParkArmsAction, )\n" + "├── perform(MoveMotion)\n", + "├── perform(MoveMotion)\n", + "├── perform(ParkArmsActionPerformable)\n", + "├── perform(ParkArmsActionPerformable)\n", + "├── perform(MoveTorsoActionPerformable)\n", + "├── perform(NavigateActionPerformable)\n", + "│ └── perform(MoveMotion)\n", + "├── perform(PickUpActionPerformable)\n", + "│ ├── perform(MoveTCPMotion)\n", + "│ ├── perform(MoveGripperMotion)\n", + "│ ├── perform(MoveTCPMotion)\n", + "│ ├── perform(MoveGripperMotion)\n", + "│ └── perform(MoveTCPMotion)\n", + "├── perform(ParkArmsActionPerformable)\n", + "├── perform(NavigateActionPerformable)\n", + "│ └── perform(MoveMotion)\n", + "├── perform(PlaceActionPerformable)\n", + "│ ├── perform(MoveTCPMotion)\n", + "│ ├── perform(MoveGripperMotion)\n", + "│ └── perform(MoveTCPMotion)\n", + "└── perform(ParkArmsActionPerformable)\n" ] } ], @@ -945,8 +8744,13 @@ }, { "cell_type": "code", - "execution_count": 33, - "metadata": {}, + "execution_count": 31, + "metadata": { + "ExecuteTime": { + "end_time": "2024-01-29T16:15:37.200246997Z", + "start_time": "2024-01-29T16:15:37.012295886Z" + } + }, "outputs": [], "source": [ "from anytree.dotexport import RenderTreeGraph, DotExporter\n", @@ -962,38 +8766,37 @@ }, { "cell_type": "code", - "execution_count": 34, - "metadata": {}, + "execution_count": 32, + "metadata": { + "ExecuteTime": { + "end_time": "2024-01-29T16:15:37.447175714Z", + "start_time": "2024-01-29T16:15:37.236464380Z" + } + }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - "Inserting TaskTree into database: 100%|██████████| 10/10 [00:00<00:00, 143.50it/s]\n" + "Inserting TaskTree into database: 100%|██████████| 22/22 [00:00<00:00, 119.33it/s]\n" ] }, { "data": { - "text/plain": [ - "pycram.orm.task.TaskTreeNode(1, 2023-11-08 13:55:09.816577, None, TaskStatus.RUNNING, None, None, 1, 1)" - ] + "text/plain": "TaskTreeNode(id=1, code_id=1, code=Code(id=1, function='no_operation', designator_id=None, designator=None, process_metadata_id=1), start_time=datetime.datetime(2024, 1, 29, 17, 14, 50, 893086), end_time=None, status=, reason=None, parent_id=None, parent=None, process_metadata_id=1)" }, - "execution_count": 34, + "execution_count": 32, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "import sqlalchemy\n", "import sqlalchemy.orm\n", "import pycram.orm.base\n", - "import pycram.orm.task\n", - "import pycram.orm.object_designator\n", - "import pycram.orm.motion_designator\n", "import pycram.orm.action_designator\n", "\n", "# set description of what we are doing\n", - "pycram.orm.base.MetaData().description = \"Tutorial for getting familiar with the ORM.\"\n", + "pycram.orm.base.ProcessMetaData().description = \"Tutorial for getting familiar with the ORM.\"\n", "\n", "engine = sqlalchemy.create_engine(\"sqlite+pysqlite:///:memory:\", echo=False)\n", "session = sqlalchemy.orm.Session(bind=engine)\n", @@ -1006,45 +8809,80 @@ }, { "cell_type": "code", - "execution_count": 35, - "metadata": {}, + "execution_count": 33, + "metadata": { + "ExecuteTime": { + "end_time": "2024-01-29T16:15:37.488726709Z", + "start_time": "2024-01-29T16:15:37.444290355Z" + } + }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "pycram.orm.action_designator.NavigateAction(Navigate, 4, 4, 1, 4, 4)\n", - "pycram.orm.action_designator.NavigateAction(Navigate, 7, 7, 1, 9, 9)\n" + "NavigateAction(id=6, process_metadata_id=1, dtype='NavigateAction', robot_state_id=4, robot_state=RobotState(id=4, torso_height=0.3, type=, pose_id=6, process_metadata_id=1), pose_id=7)\n", + "NavigateAction(id=15, process_metadata_id=1, dtype='NavigateAction', robot_state_id=7, robot_state=RobotState(id=7, torso_height=0.3, type=, pose_id=15, process_metadata_id=1), pose_id=16)\n" ] } ], "source": [ - "navigations = session.query(pycram.orm.action_designator.NavigateAction).all()\n", + "from sqlalchemy import select\n", + "\n", + "navigations = session.scalars(select(pycram.orm.action_designator.NavigateAction)).all()\n", "print(*navigations, sep=\"\\n\")" ] }, { "cell_type": "code", - "execution_count": 36, - "metadata": {}, + "execution_count": 34, + "metadata": { + "ExecuteTime": { + "end_time": "2024-01-29T16:15:37.489720308Z", + "start_time": "2024-01-29T16:15:37.488078620Z" + } + }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "(pycram.orm.action_designator.NavigateAction(Navigate, 4, 4, 1, 4, 4), pycram.orm.base.Position(0.5799999999999998, 1.28, 0.0, 4, None), pycram.orm.base.Quaternion(0.0, 0.0, 0.16378361324016077, -0.9864962889104031, 4, None))\n", - "(pycram.orm.action_designator.NavigateAction(Navigate, 7, 7, 1, 9, 9), pycram.orm.base.Position(-1.9074999952316287, 0.779200015068054, 0.0, 9, None), pycram.orm.base.Quaternion(0.0, 0.0, 0.16439898730535735, 0.9863939238321437, 9, None))\n" + "NavigateAction(id=6, process_metadata_id=1, dtype='NavigateAction', robot_state_id=4, robot_state=RobotState(id=4, torso_height=0.3, type=, pose_id=6, process_metadata_id=1), pose_id=7)\n", + "NavigateAction(id=15, process_metadata_id=1, dtype='NavigateAction', robot_state_id=7, robot_state=RobotState(id=7, torso_height=0.3, type=, pose_id=15, process_metadata_id=1), pose_id=16)\n" ] } ], "source": [ - "navigations = session.query(pycram.orm.action_designator.NavigateAction, \n", - " pycram.orm.base.Position, \n", - " pycram.orm.base.Quaternion).\\\n", - " join(pycram.orm.base.Position).\\\n", - " join(pycram.orm.base.Quaternion).all()\n", + "navigations = (session.scalars(select(pycram.orm.action_designator.NavigateAction, pycram.orm.base.Position, pycram.orm.base.Quaternion).\n", + " join(pycram.orm.action_designator.NavigateAction.pose).\n", + " join(pycram.orm.base.Pose.position).\n", + " join(pycram.orm.base.Pose.orientation)).all())\n", "print(*navigations, sep=\"\\n\")" ] + }, + { + "cell_type": "markdown", + "source": [ + "The world can also be closed with the 'exit' method" + ], + "metadata": { + "collapsed": false + } + }, + { + "cell_type": "code", + "execution_count": 35, + "outputs": [], + "source": [ + "world.exit()" + ], + "metadata": { + "collapsed": false, + "ExecuteTime": { + "end_time": "2024-01-29T16:15:37.732405944Z", + "start_time": "2024-01-29T16:15:37.488193658Z" + } + } } ], "metadata": { diff --git a/examples/local_transformer.ipynb b/examples/local_transformer.ipynb index 2d4d41c03..2d517375d 100644 --- a/examples/local_transformer.ipynb +++ b/examples/local_transformer.ipynb @@ -5,6 +5,8 @@ "id": "611b7e76", "metadata": {}, "source": [ + "# Local Transformer\n", + "The local transformer is used to handle transforms between different frames in PyCRAM. This is useful when you want to transform a pose from one frame to another, for example, from the map frame to the frame of an object. This example will introduce the Local Transformer and how to use it to transform poses between frames.\n", "\n", "## Setting up the Environment\n", "\n", @@ -17,14 +19,14 @@ "id": "615cb805", "metadata": { "ExecuteTime": { - "end_time": "2023-09-08T16:51:08.901104329Z", - "start_time": "2023-09-08T16:51:08.139879012Z" + "end_time": "2024-02-07T09:18:56.397119146Z", + "start_time": "2024-02-07T09:18:56.384091718Z" } }, "outputs": [], "source": [ "from pycram.bullet_world import BulletWorld, Object\n", - "from pycram.pose import Transform\n", + "from pycram.pose import Transform, Pose\n", "from pycram.local_transformer import LocalTransformer" ] }, @@ -37,31 +39,17 @@ "## Initializing the World\n", "\n", "Every robot simulation requires a world where it can interact. This world serves as the playground where the robot performs tasks. \n", - "Let's start by creating this world.\n" + "Let's start by creating this world.\n", + "\n", + "Since the local transformer can only transform between frames of objects which are in the world, we need to create a world first.\n" ] }, { "cell_type": "code", - "execution_count": 2, + "execution_count": null, "id": "7a3222c2", - "metadata": { - "ExecuteTime": { - "end_time": "2023-09-08T16:51:11.202198685Z", - "start_time": "2023-09-08T16:51:10.916529902Z" - } - }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Unknown tag \"material\" in /robot[@name='plane']/link[@name='planeLink']/collision[1]\n", - "Unknown tag \"contact\" in /robot[@name='plane']/link[@name='planeLink']\n", - "Unknown tag \"material\" in /robot[@name='plane']/link[@name='planeLink']/collision[1]\n", - "Unknown tag \"contact\" in /robot[@name='plane']/link[@name='planeLink']\n" - ] - } - ], + "metadata": {}, + "outputs": [], "source": [ "# Create an instance of the BulletWorld\n", "world = BulletWorld()\n" @@ -79,7 +67,12 @@ "cell_type": "code", "execution_count": 9, "id": "c019c259", - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2024-02-07T09:20:31.566964425Z", + "start_time": "2024-02-07T09:20:31.309671668Z" + } + }, "outputs": [], "source": [ "world.exit()" @@ -95,7 +88,7 @@ "\n", "For our robot to perform meaningful tasks, we need to populate its world with objects. \n", "In this section, we'll add a variety of objects, from a simple floor plane to kitchen setups and items like milk and bowls. \n", - "These objects will be used in subsequent tasks.\n" + "These objects will be used in subsequent tasks, to provide the frames to which we will transform poses.\n" ] }, { @@ -104,8 +97,8 @@ "id": "14494539", "metadata": { "ExecuteTime": { - "end_time": "2023-09-08T16:51:38.439962987Z", - "start_time": "2023-09-08T16:51:33.675944073Z" + "end_time": "2024-02-07T09:19:12.883651520Z", + "start_time": "2024-02-07T09:19:09.027873229Z" } }, "outputs": [ @@ -113,11 +106,6 @@ "name": "stderr", "output_type": "stream", "text": [ - "Unknown tag \"material\" in /robot[@name='plane']/link[@name='planeLink']/collision[1]\n", - "Unknown tag \"contact\" in /robot[@name='plane']/link[@name='planeLink']\n", - "Scalar element defined multiple times: limit\n", - "Unknown tag \"material\" in /robot[@name='plane']/link[@name='planeLink']/collision[1]\n", - "Unknown tag \"contact\" in /robot[@name='plane']/link[@name='planeLink']\n", "Scalar element defined multiple times: limit\n" ] } @@ -126,8 +114,6 @@ "from pycram.bullet_world import Object\n", "from pycram.enums import ObjectType\n", "\n", - "plane = Object(\"floor\", ObjectType.ENVIRONMENT, \"plane.urdf\", world=world)\n", - "\n", "kitchen = Object(\"kitchen\", ObjectType.ENVIRONMENT, \"kitchen.urdf\")\n", "milk = Object(\"milk\", ObjectType.MILK, \"milk.stl\", Pose([0.9, 1, 0.95]))\n", "bowl = Object(\"bowl\", ObjectType.BOWL, \"bowl.stl\", Pose([1.6, 1, 0.90]))" @@ -146,14 +132,19 @@ "cell_type": "code", "execution_count": 4, "id": "708606eb", - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2024-02-07T09:19:17.445812011Z", + "start_time": "2024-02-07T09:19:17.433695422Z" + } + }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "\n", - "\n" + "\n", + "\n" ] } ], @@ -182,8 +173,8 @@ "id": "988ffda1", "metadata": { "ExecuteTime": { - "end_time": "2023-09-08T16:42:15.478051994Z", - "start_time": "2023-09-08T16:42:15.472743693Z" + "end_time": "2024-02-07T09:19:19.412829961Z", + "start_time": "2024-02-07T09:19:19.398278560Z" } }, "outputs": [ @@ -194,9 +185,9 @@ "header: \n", " seq: 0\n", " stamp: \n", - " secs: 1699448290\n", - " nsecs: 552922010\n", - " frame_id: \"milk_4\"\n", + " secs: 1707297559\n", + " nsecs: 407153367\n", + " frame_id: \"milk_3\"\n", "pose: \n", " position: \n", " x: 0.09999999999999998\n", @@ -207,11 +198,12 @@ " y: 0.0\n", " z: 0.0\n", " w: 1.0\n", + "-------------------\n", "header: \n", " seq: 0\n", " stamp: \n", - " secs: 1699448290\n", - " nsecs: 553559541\n", + " secs: 1707297559\n", + " nsecs: 407913208\n", " frame_id: \"map\"\n", "pose: \n", " position: \n", @@ -228,14 +220,14 @@ ], "source": [ "from pycram.local_transformer import LocalTransformer\n", - "from pycram.pose import Pose\n", "\n", "l = LocalTransformer()\n", "test_pose = Pose([1, 1, 1], [0, 0, 0, 1], \"map\")\n", "\n", - "transformed_pose = l.transform_to_object_frame(test_pose, milk)\n", + "transformed_pose = l.transform_pose_to_object_frame(test_pose, milk)\n", "print(transformed_pose)\n", "\n", + "print(\"-------------------\")\n", "new_pose = l.transform_pose(transformed_pose, \"map\")\n", "print(new_pose)" ] @@ -246,14 +238,19 @@ "metadata": {}, "source": [ "In the above code, we first transformed a pose to the object frame of the milk object, and then we transformed it back to the map frame. This demonstrates how we can easily manipulate poses relative to objects in our environment.\n", - "You can also transform poses relative to other poses. by using the transform_pose method. Further u can set a Transform." + "You can also transform poses relative to other poses. by using the transform_pose method. Further you can set a Transform." ] }, { "cell_type": "code", "execution_count": 6, "id": "dd2bafc5", - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2024-02-07T09:19:24.941756539Z", + "start_time": "2024-02-07T09:19:24.929728567Z" + } + }, "outputs": [], "source": [ "from pycram.pose import Transform\n", @@ -278,8 +275,8 @@ "id": "6b23f540", "metadata": { "ExecuteTime": { - "end_time": "2023-09-08T16:47:16.375950749Z", - "start_time": "2023-09-08T16:47:16.332420624Z" + "end_time": "2024-02-07T09:19:26.995686220Z", + "start_time": "2024-02-07T09:19:26.983125610Z" } }, "outputs": [], @@ -298,21 +295,26 @@ "\n", "Furthermore, links of an Object are represented by the Object frame_id + '/' + link name. Since link names need to be unique for an URDF this is no problem.\n", "\n", - "These frames need to be used in whenever you are transforming something with the local transformer. To get the base frame of an Object, meaning the frame name without any link there is the attribute tf_frame and for the frame of a link there is the method get_link_tf_frame. " + "These frames need to be used in whenever you are transforming something with the local transformer. To get the base frame of an Object, meaning the frame name without any link there is the attribute tf_frame and for the frame of a link there is the collection links from which you can access all link objects by name, link objects also have the attribute tf_frame which gives the tf_frame of the link. " ] }, { "cell_type": "code", "execution_count": 8, "id": "bd619710", - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2024-02-07T09:20:26.251771677Z", + "start_time": "2024-02-07T09:20:26.240730107Z" + } + }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "milk_4\n", - "kitchen_3/kitchen_island_surface\n" + "milk_3\n", + "kitchen_2/kitchen_island_surface\n" ] } ], diff --git a/examples/location_designator.ipynb b/examples/location_designator.ipynb index 9865e46f7..a6c368aec 100644 --- a/examples/location_designator.ipynb +++ b/examples/location_designator.ipynb @@ -6,18 +6,18 @@ "metadata": {}, "source": [ "# Location Designator\n", - "This example will show you waht location designator are, how to use them and what they are capable of. \n", + "This example will show you what location designators are, how to use them and what they are capable of. \n", "\n", - "Location Deisgnator are used to semantically describe locations in the world. You could, for example, create a location designator that describes every position where a robot can be placed without colliding with the environment. Location designator can describe locations for:\n", + "Location Designators are used to semantically describe locations in the world. You could, for example, create a location designator that describes every position where a robot can be placed without colliding with the environment. Location designator can describe locations for:\n", "\n", " * Visibility \n", " * Reachability\n", - " * Occupany \n", + " * Occupancy \n", " * URDF Links (for example a table)\n", "\n", "To find locations that fit the given constrains, location designator create Costmaps. Costmaps are a 2D distribution that have a value greater than 0 for every position that fits the costmap criteria.\n", "\n", - "Location designator work similar to other designator, meaning you have to create a location designator description which describes the location. This description can then be resolved to the actual 6D pose on runtime.\n", + "Location designators work similar to other designators, meaning you have to create a location designator description which describes the location. This description can then be resolved to the actual 6D pose on runtime.\n", "\n", "## Occupancy\n", "\n", @@ -63,7 +63,7 @@ "id": "8c09672d", "metadata": {}, "source": [ - "Next up we will create the location designator description, the ```CostmapLocation``` that we will be using needs a target as parameter. This target describes what the location designator is for, this could either be a pose or object that the robot should be able to see or reach.\n", + "Next up we will create the location designator description, the ```CostmapLocation``` that we will be using needs a target as a parameter. This target describes what the location designator is for, this could either be a pose or object that the robot should be able to see or reach.\n", "\n", "In this case we only want poses where the robot can be placed, this is the default behaviour of the location designator which we will be extending later. " ] @@ -187,7 +187,7 @@ "metadata": {}, "source": [ "## Visibile\n", - "The ```CostmapLocation``` can also find position from which the robot can see a given object or location. This is very similar to how rechable locations are described, meaning we provide a object designator or a pose and a robot designator but this time we use the ```visible_for``` parameter. \n", + "The ```CostmapLocation``` can also find position from which the robot can see a given object or location. This is very similar to how reachable locations are described, meaning we provide a object designator or a pose and a robot designator but this time we use the ```visible_for``` parameter. \n", "\n", "For this example we need the milk as well as the PR2, so if you did not spawn them during the previous location designator you can spawn them with the following cell. " ] @@ -252,7 +252,7 @@ "## Semantic \n", "Semantic location designator are used to create location descriptions for semantic entities, like a table. An example of this is: You have a robot that picked up an object and should place it on a table. Semantic location designator then allows to find poses that are on this table.\n", "\n", - "Semantic location designator need an object from which the target entity is a part and the urdf link representing the entity. In this case we want a position on the kitchen island, so we have to provide the kitchen object designator since the island is a part of the kitchen and the link name of the island surface. \n", + "Semantic location designator need an object from which the target entity is a part and the URDF link representing the entity. In this case we want a position on the kitchen island, so we have to provide the kitchen object designator since the island is a part of the kitchen and the link name of the island surface. \n", "\n", "For this example we need the kitchen as well as the milk. If you spawned them in one of the previous examples you don't need to execute the following cell." ] @@ -359,7 +359,7 @@ "## Accessing Locations\n", "Accessing describes a location from which the robot can open a drawer. The drawer is specified by a ObjetcPart designator which describes the handle of the drawer.\n", "\n", - "At the moment this location designator only works in the apartment environment, so please remove the kitchen if you spawned it in a previous example. Furthermore, we need a robot so we also spawn the pr2 if it isn't spawned already." + "At the moment this location designator only works in the apartment environment, so please remove the kitchen if you spawned it in a previous example. Furthermore, we need a robot, so we also spawn the PR2 if it isn't spawned already." ] }, { diff --git a/examples/migrate_neems.ipynb b/examples/migrate_neems.ipynb index db3baabe5..8f8064c0d 100644 --- a/examples/migrate_neems.ipynb +++ b/examples/migrate_neems.ipynb @@ -128,7 +128,7 @@ " @with_tree\n", " def pick_and_place_plan(self):\n", " with simulated_robot:\n", - " ParkArmsAction.Action(Arms.BOTH).perform()\n", + " ParkArmsAction([Arms.BOTH]).resolve().perform()\n", " MoveTorsoAction([0.3]).resolve().perform()\n", " pickup_pose = CostmapLocation(target=self.cereal_desig.resolve(), reachable_for=self.robot_desig).resolve()\n", " pickup_arm = pickup_pose.reachable_arms[0]\n", @@ -147,7 +147,7 @@ "\n", " PlaceAction(self.cereal_desig, target_locations=[place_island.pose], arms=[pickup_arm]).resolve().perform()\n", "\n", - " ParkArmsAction.Action(Arms.BOTH).perform()\n" + " ParkArmsAction([Arms.BOTH]).resolve().perform()\n" ] }, { diff --git a/examples/minimal_task_tree.ipynb b/examples/minimal_task_tree.ipynb index 1ac203580..ff4839c44 100644 --- a/examples/minimal_task_tree.ipynb +++ b/examples/minimal_task_tree.ipynb @@ -16,11 +16,25 @@ "execution_count": 1, "metadata": { "ExecuteTime": { - "end_time": "2023-04-28T09:45:06.870087Z", - "start_time": "2023-04-28T09:45:06.870015Z" + "end_time": "2024-01-05T11:47:15.273850937Z", + "start_time": "2024-01-05T11:47:14.439086041Z" } }, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "pybullet build time: May 20 2022 19:44:17\n", + "Unknown attribute \"type\" in /robot[@name='pr2']/link[@name='base_laser_link']\n", + "Unknown attribute \"type\" in /robot[@name='pr2']/link[@name='wide_stereo_optical_frame']\n", + "Unknown attribute \"type\" in /robot[@name='pr2']/link[@name='narrow_stereo_optical_frame']\n", + "Unknown attribute \"type\" in /robot[@name='pr2']/link[@name='laser_tilt_link']\n", + "[WARN] [1704455235.033913]: Could not import RoboKudo messages, RoboKudo interface could not be initialized\n", + "[WARN] [1704455235.039023]: Failed to import Giskard messages\n" + ] + } + ], "source": [ "from pycram.bullet_world import BulletWorld\n", "from pycram.robot_descriptions import robot_description\n", @@ -48,8 +62,8 @@ "execution_count": 2, "metadata": { "ExecuteTime": { - "end_time": "2023-04-27T17:32:49.441717Z", - "start_time": "2023-04-27T17:32:49.441589Z" + "end_time": "2024-01-05T11:47:21.361713709Z", + "start_time": "2024-01-05T11:47:15.370855034Z" } }, "outputs": [ @@ -57,19 +71,19 @@ "name": "stderr", "output_type": "stream", "text": [ - "Unknown tag \"material\" in /robot[@name='plane']/link[@name='planeLink']/collision[1]\n", - "Unknown tag \"contact\" in /robot[@name='plane']/link[@name='planeLink']\n", "Unknown tag \"material\" in /robot[@name='plane']/link[@name='planeLink']/collision[1]\n", "Unknown tag \"contact\" in /robot[@name='plane']/link[@name='planeLink']\n", "Unknown attribute \"type\" in /robot[@name='pr2']/link[@name='base_laser_link']\n", "Unknown attribute \"type\" in /robot[@name='pr2']/link[@name='wide_stereo_optical_frame']\n", "Unknown attribute \"type\" in /robot[@name='pr2']/link[@name='narrow_stereo_optical_frame']\n", "Unknown attribute \"type\" in /robot[@name='pr2']/link[@name='laser_tilt_link']\n", + "Unknown tag \"material\" in /robot[@name='plane']/link[@name='planeLink']/collision[1]\n", + "Unknown tag \"contact\" in /robot[@name='plane']/link[@name='planeLink']\n", + "Scalar element defined multiple times: limit\n", "Unknown attribute \"type\" in /robot[@name='pr2']/link[@name='base_laser_link']\n", "Unknown attribute \"type\" in /robot[@name='pr2']/link[@name='wide_stereo_optical_frame']\n", "Unknown attribute \"type\" in /robot[@name='pr2']/link[@name='narrow_stereo_optical_frame']\n", "Unknown attribute \"type\" in /robot[@name='pr2']/link[@name='laser_tilt_link']\n", - "Scalar element defined multiple times: limit\n", "Scalar element defined multiple times: limit\n" ] } @@ -98,8 +112,8 @@ "execution_count": 3, "metadata": { "ExecuteTime": { - "end_time": "2023-04-27T17:32:58.124468Z", - "start_time": "2023-04-27T17:32:58.124325Z" + "end_time": "2024-01-05T11:47:35.217688853Z", + "start_time": "2024-01-05T11:47:21.361234790Z" } }, "outputs": [], @@ -107,7 +121,7 @@ "@pycram.task.with_tree\n", "def plan():\n", " with simulated_robot:\n", - " ParkArmsAction.Action(Arms.BOTH).perform()\n", + " ParkArmsActionPerformable(Arms.BOTH).perform()\n", " MoveTorsoAction([0.3]).resolve().perform()\n", " pickup_pose = CostmapLocation(target=cereal_desig.resolve(), reachable_for=robot_desig).resolve()\n", " pickup_arm = pickup_pose.reachable_arms[0]\n", @@ -126,7 +140,7 @@ "\n", " ParkArmsAction([Arms.BOTH]).resolve().perform()\n", "\n", - " ParkArmsAction.Action(Arms.BOTH).perform()\n", + " ParkArmsActionPerformable(Arms.BOTH).perform()\n", "\n", "plan()\n" ] @@ -143,8 +157,8 @@ "execution_count": 4, "metadata": { "ExecuteTime": { - "end_time": "2023-04-27T17:33:02.572319Z", - "start_time": "2023-04-27T17:33:02.572253Z" + "end_time": "2024-01-05T11:47:35.222415842Z", + "start_time": "2024-01-05T11:47:35.217889291Z" } }, "outputs": [ @@ -154,15 +168,25 @@ "text": [ "no_operation()\n", "└── plan()\n", - " ├── perform(ParkArmsAction, )\n", - " ├── perform(MoveTorsoAction, )\n", - " ├── perform(NavigateAction, )\n", - " ├── perform(PickUpAction, )\n", - " ├── perform(ParkArmsAction, )\n", - " ├── perform(NavigateAction, )\n", - " ├── perform(PlaceAction, )\n", - " ├── perform(ParkArmsAction, )\n", - " └── perform(ParkArmsAction, )\n" + " ├── perform(ParkArmsActionPerformable)\n", + " ├── perform(MoveTorsoActionPerformable)\n", + " ├── perform(NavigateActionPerformable)\n", + " │ └── perform(Motion)\n", + " ├── perform(PickUpActionPerformable)\n", + " │ ├── perform(Motion)\n", + " │ ├── perform(Motion)\n", + " │ ├── perform(Motion)\n", + " │ ├── perform(Motion)\n", + " │ └── perform(Motion)\n", + " ├── perform(ParkArmsActionPerformable)\n", + " ├── perform(NavigateActionPerformable)\n", + " │ └── perform(Motion)\n", + " ├── perform(PlaceActionPerformable)\n", + " │ ├── perform(Motion)\n", + " │ ├── perform(Motion)\n", + " │ └── perform(Motion)\n", + " ├── perform(ParkArmsActionPerformable)\n", + " └── perform(ParkArmsActionPerformable)\n" ] } ], @@ -183,8 +207,8 @@ "execution_count": 5, "metadata": { "ExecuteTime": { - "end_time": "2023-04-28T09:45:59.592864Z", - "start_time": "2023-04-28T09:45:58.928492Z" + "end_time": "2024-01-05T11:47:49.422118950Z", + "start_time": "2024-01-05T11:47:35.221784522Z" } }, "outputs": [ @@ -194,25 +218,45 @@ "text": [ "no_operation()\n", "├── plan()\n", - "│ ├── perform(ParkArmsAction, )\n", - "│ ├── perform(MoveTorsoAction, )\n", - "│ ├── perform(NavigateAction, )\n", - "│ ├── perform(PickUpAction, )\n", - "│ ├── perform(ParkArmsAction, )\n", - "│ ├── perform(NavigateAction, )\n", - "│ ├── perform(PlaceAction, )\n", - "│ ├── perform(ParkArmsAction, )\n", - "│ └── perform(ParkArmsAction, )\n", + "│ ├── perform(ParkArmsActionPerformable)\n", + "│ ├── perform(MoveTorsoActionPerformable)\n", + "│ ├── perform(NavigateActionPerformable)\n", + "│ │ └── perform(Motion)\n", + "│ ├── perform(PickUpActionPerformable)\n", + "│ │ ├── perform(Motion)\n", + "│ │ ├── perform(Motion)\n", + "│ │ ├── perform(Motion)\n", + "│ │ ├── perform(Motion)\n", + "│ │ └── perform(Motion)\n", + "│ ├── perform(ParkArmsActionPerformable)\n", + "│ ├── perform(NavigateActionPerformable)\n", + "│ │ └── perform(Motion)\n", + "│ ├── perform(PlaceActionPerformable)\n", + "│ │ ├── perform(Motion)\n", + "│ │ ├── perform(Motion)\n", + "│ │ └── perform(Motion)\n", + "│ ├── perform(ParkArmsActionPerformable)\n", + "│ └── perform(ParkArmsActionPerformable)\n", "└── plan()\n", - " ├── perform(ParkArmsAction, )\n", - " ├── perform(MoveTorsoAction, )\n", - " ├── perform(NavigateAction, )\n", - " ├── perform(PickUpAction, )\n", - " ├── perform(ParkArmsAction, )\n", - " ├── perform(NavigateAction, )\n", - " ├── perform(PlaceAction, )\n", - " ├── perform(ParkArmsAction, )\n", - " └── perform(ParkArmsAction, )\n" + " ├── perform(ParkArmsActionPerformable)\n", + " ├── perform(MoveTorsoActionPerformable)\n", + " ├── perform(NavigateActionPerformable)\n", + " │ └── perform(Motion)\n", + " ├── perform(PickUpActionPerformable)\n", + " │ ├── perform(Motion)\n", + " │ ├── perform(Motion)\n", + " │ ├── perform(Motion)\n", + " │ ├── perform(Motion)\n", + " │ └── perform(Motion)\n", + " ├── perform(ParkArmsActionPerformable)\n", + " ├── perform(NavigateActionPerformable)\n", + " │ └── perform(Motion)\n", + " ├── perform(PlaceActionPerformable)\n", + " │ ├── perform(Motion)\n", + " │ ├── perform(Motion)\n", + " │ └── perform(Motion)\n", + " ├── perform(ParkArmsActionPerformable)\n", + " └── perform(ParkArmsActionPerformable)\n" ] } ], @@ -234,8 +278,8 @@ "execution_count": 6, "metadata": { "ExecuteTime": { - "end_time": "2023-04-28T09:46:37.041421Z", - "start_time": "2023-04-28T09:46:36.999813Z" + "end_time": "2024-01-05T11:47:49.434500008Z", + "start_time": "2024-01-05T11:47:49.422026208Z" } }, "outputs": [ @@ -246,25 +290,45 @@ "simulation()\n", "no_operation()\n", "├── plan()\n", - "│ ├── perform(ParkArmsAction, )\n", - "│ ├── perform(MoveTorsoAction, )\n", - "│ ├── perform(NavigateAction, )\n", - "│ ├── perform(PickUpAction, )\n", - "│ ├── perform(ParkArmsAction, )\n", - "│ ├── perform(NavigateAction, )\n", - "│ ├── perform(PlaceAction, )\n", - "│ ├── perform(ParkArmsAction, )\n", - "│ └── perform(ParkArmsAction, )\n", + "│ ├── perform(ParkArmsActionPerformable)\n", + "│ ├── perform(MoveTorsoActionPerformable)\n", + "│ ├── perform(NavigateActionPerformable)\n", + "│ │ └── perform(Motion)\n", + "│ ├── perform(PickUpActionPerformable)\n", + "│ │ ├── perform(Motion)\n", + "│ │ ├── perform(Motion)\n", + "│ │ ├── perform(Motion)\n", + "│ │ ├── perform(Motion)\n", + "│ │ └── perform(Motion)\n", + "│ ├── perform(ParkArmsActionPerformable)\n", + "│ ├── perform(NavigateActionPerformable)\n", + "│ │ └── perform(Motion)\n", + "│ ├── perform(PlaceActionPerformable)\n", + "│ │ ├── perform(Motion)\n", + "│ │ ├── perform(Motion)\n", + "│ │ └── perform(Motion)\n", + "│ ├── perform(ParkArmsActionPerformable)\n", + "│ └── perform(ParkArmsActionPerformable)\n", "└── plan()\n", - " ├── perform(ParkArmsAction, )\n", - " ├── perform(MoveTorsoAction, )\n", - " ├── perform(NavigateAction, )\n", - " ├── perform(PickUpAction, )\n", - " ├── perform(ParkArmsAction, )\n", - " ├── perform(NavigateAction, )\n", - " ├── perform(PlaceAction, )\n", - " ├── perform(ParkArmsAction, )\n", - " └── perform(ParkArmsAction, )\n" + " ├── perform(ParkArmsActionPerformable)\n", + " ├── perform(MoveTorsoActionPerformable)\n", + " ├── perform(NavigateActionPerformable)\n", + " │ └── perform(Motion)\n", + " ├── perform(PickUpActionPerformable)\n", + " │ ├── perform(Motion)\n", + " │ ├── perform(Motion)\n", + " │ ├── perform(Motion)\n", + " │ ├── perform(Motion)\n", + " │ └── perform(Motion)\n", + " ├── perform(ParkArmsActionPerformable)\n", + " ├── perform(NavigateActionPerformable)\n", + " │ └── perform(Motion)\n", + " ├── perform(PlaceActionPerformable)\n", + " │ ├── perform(Motion)\n", + " │ ├── perform(Motion)\n", + " │ └── perform(Motion)\n", + " ├── perform(ParkArmsActionPerformable)\n", + " └── perform(ParkArmsActionPerformable)\n" ] } ], @@ -286,8 +350,8 @@ "execution_count": 7, "metadata": { "ExecuteTime": { - "end_time": "2023-04-28T09:46:45.637721Z", - "start_time": "2023-04-28T09:46:45.635535Z" + "end_time": "2024-01-05T11:47:49.438410783Z", + "start_time": "2024-01-05T11:47:49.433036544Z" } }, "outputs": [ @@ -297,15 +361,25 @@ "text": [ "no_operation()\n", "+-- plan()\n", - " |-- perform(ParkArmsAction, )\n", - " |-- perform(MoveTorsoAction, )\n", - " |-- perform(NavigateAction, )\n", - " |-- perform(PickUpAction, )\n", - " |-- perform(ParkArmsAction, )\n", - " |-- perform(NavigateAction, )\n", - " |-- perform(PlaceAction, )\n", - " |-- perform(ParkArmsAction, )\n", - " +-- perform(ParkArmsAction, )\n" + " |-- perform(ParkArmsActionPerformable)\n", + " |-- perform(MoveTorsoActionPerformable)\n", + " |-- perform(NavigateActionPerformable)\n", + " | +-- perform(Motion)\n", + " |-- perform(PickUpActionPerformable)\n", + " | |-- perform(Motion)\n", + " | |-- perform(Motion)\n", + " | |-- perform(Motion)\n", + " | |-- perform(Motion)\n", + " | +-- perform(Motion)\n", + " |-- perform(ParkArmsActionPerformable)\n", + " |-- perform(NavigateActionPerformable)\n", + " | +-- perform(Motion)\n", + " |-- perform(PlaceActionPerformable)\n", + " | |-- perform(Motion)\n", + " | |-- perform(Motion)\n", + " | +-- perform(Motion)\n", + " |-- perform(ParkArmsActionPerformable)\n", + " +-- perform(ParkArmsActionPerformable)\n" ] } ], @@ -326,8 +400,8 @@ "execution_count": 8, "metadata": { "ExecuteTime": { - "end_time": "2023-04-28T09:46:48.259716Z", - "start_time": "2023-04-28T09:46:48.233474Z" + "end_time": "2024-01-05T11:47:57.076211143Z", + "start_time": "2024-01-05T11:47:49.437672197Z" } }, "outputs": [ @@ -337,15 +411,25 @@ "text": [ "no_operation()\n", "+-- plan()\n", - " |-- perform(ParkArmsAction, )\n", - " |-- perform(MoveTorsoAction, )\n", - " |-- perform(NavigateAction, )\n", - " |-- perform(PickUpAction, )\n", - " |-- perform(ParkArmsAction, )\n", - " |-- perform(NavigateAction, )\n", - " |-- perform(PlaceAction, )\n", - " |-- perform(ParkArmsAction, )\n", - " +-- perform(ParkArmsAction, )\n" + " |-- perform(ParkArmsActionPerformable)\n", + " |-- perform(MoveTorsoActionPerformable)\n", + " |-- perform(NavigateActionPerformable)\n", + " | +-- perform(Motion)\n", + " |-- perform(PickUpActionPerformable)\n", + " | |-- perform(Motion)\n", + " | |-- perform(Motion)\n", + " | |-- perform(Motion)\n", + " | |-- perform(Motion)\n", + " | +-- perform(Motion)\n", + " |-- perform(ParkArmsActionPerformable)\n", + " |-- perform(NavigateActionPerformable)\n", + " | +-- perform(Motion)\n", + " |-- perform(PlaceActionPerformable)\n", + " | |-- perform(Motion)\n", + " | |-- perform(Motion)\n", + " | +-- perform(Motion)\n", + " |-- perform(ParkArmsActionPerformable)\n", + " +-- perform(ParkArmsActionPerformable)\n" ] } ], @@ -368,8 +452,8 @@ "execution_count": 9, "metadata": { "ExecuteTime": { - "end_time": "2023-04-28T09:46:52.656020Z", - "start_time": "2023-04-28T09:46:52.653083Z" + "end_time": "2024-01-05T11:47:57.081178616Z", + "start_time": "2024-01-05T11:47:57.077818445Z" } }, "outputs": [ @@ -378,9 +462,9 @@ "output_type": "stream", "text": [ "Code: plan() \n", - " start_time: 2023-11-08 14:01:12.716969 \n", + " start_time: 2024-01-05 12:47:21.363057 \n", " Status: TaskStatus.SUCCEEDED \n", - " end_time: 2023-11-08 14:01:24.675108 \n", + " end_time: 2024-01-05 12:47:35.214734 \n", " \n" ] } @@ -401,8 +485,8 @@ "execution_count": 10, "metadata": { "ExecuteTime": { - "end_time": "2023-04-28T09:46:55.385481Z", - "start_time": "2023-04-28T09:46:55.381316Z" + "end_time": "2024-01-05T11:47:57.090325704Z", + "start_time": "2024-01-05T11:47:57.081062518Z" } }, "outputs": [ @@ -431,8 +515,8 @@ "execution_count": 11, "metadata": { "ExecuteTime": { - "end_time": "2023-04-28T09:46:57.445908Z", - "start_time": "2023-04-28T09:46:57.443154Z" + "end_time": "2024-01-05T11:47:57.130889801Z", + "start_time": "2024-01-05T11:47:57.129989892Z" } }, "outputs": [ @@ -467,8 +551,8 @@ "execution_count": 12, "metadata": { "ExecuteTime": { - "end_time": "2023-04-28T09:47:00.292660Z", - "start_time": "2023-04-28T09:47:00.287579Z" + "end_time": "2024-01-05T11:47:57.131271385Z", + "start_time": "2024-01-05T11:47:57.130193323Z" } }, "outputs": [ @@ -479,9 +563,9 @@ "no_operation()\n", "+-- failing_plan()\n", "Code: failing_plan() \n", - " start_time: 2023-11-08 14:02:00.257042 \n", + " start_time: 2024-01-05 12:47:57.088480 \n", " Status: TaskStatus.FAILED \n", - " end_time: 2023-11-08 14:02:00.257507 \n", + " end_time: 2024-01-05 12:47:57.089024 \n", " \n" ] } @@ -496,8 +580,8 @@ "execution_count": 13, "metadata": { "ExecuteTime": { - "end_time": "2023-04-28T09:47:03.581366Z", - "start_time": "2023-04-28T09:47:03.447150Z" + "end_time": "2024-01-05T11:47:57.328473210Z", + "start_time": "2024-01-05T11:47:57.130261104Z" } }, "outputs": [], diff --git a/examples/motion_designator.ipynb b/examples/motion_designator.ipynb index 9dd9b5c66..2a0b256de 100644 --- a/examples/motion_designator.ipynb +++ b/examples/motion_designator.ipynb @@ -6,32 +6,44 @@ "metadata": {}, "source": [ "# Motion Designator\n", - "Motion designator are similar to action designator, but unlike action designator, motion designator represent atomar low-level motions. Motion designator only take the parameter that they should execute and not a list of possible parameter, like the other designator. Like action designator motion designator can be performed, performing motion designator verifies the parameter and passes the designator to the respective process module. \n", + "Motion designators are similar to action designators, but unlike action designators, motion designators represent atomic low-level motions. Motion designators only take the parameter that they should execute and not a list of possible parameters, like the other designators. Like action designators, motion designators can be performed, performing motion designator verifies the parameter and passes the designator to the respective process module. \n", "\n", - "Since motion designaotr perform motion on the robot, we need a robot which we can use. Therefore, we will create a BulletWorld as well as a PR2 robot." + "Since motion designators perform a motion on the robot, we need a robot which we can use. Therefore, we will create a BulletWorld as well as a PR2 robot." ] }, { "cell_type": "code", "execution_count": 1, "id": "7f7c74ae", - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2024-01-29T16:47:00.051126267Z", + "start_time": "2024-01-29T16:46:56.312023994Z" + } + }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - "Unknown tag \"material\" in /robot[@name='plane']/link[@name='planeLink']/collision[1]\n", - "Unknown tag \"contact\" in /robot[@name='plane']/link[@name='planeLink']\n", + "pybullet build time: May 20 2022 19:44:17\n", "Unknown attribute \"type\" in /robot[@name='pr2']/link[@name='base_laser_link']\n", "Unknown attribute \"type\" in /robot[@name='pr2']/link[@name='wide_stereo_optical_frame']\n", "Unknown attribute \"type\" in /robot[@name='pr2']/link[@name='narrow_stereo_optical_frame']\n", "Unknown attribute \"type\" in /robot[@name='pr2']/link[@name='laser_tilt_link']\n", + "[WARN] [1706546816.907019]: Failed to import Giskard messages\n", + "[WARN] [1706546816.911886]: Could not import RoboKudo messages, RoboKudo interface could not be initialized\n", + "Unknown tag \"material\" in /robot[@name='plane']/link[@name='planeLink']/collision[1]\n", + "Unknown tag \"contact\" in /robot[@name='plane']/link[@name='planeLink']\n", "Unknown tag \"material\" in /robot[@name='plane']/link[@name='planeLink']/collision[1]\n", "Unknown tag \"contact\" in /robot[@name='plane']/link[@name='planeLink']\n", "Unknown attribute \"type\" in /robot[@name='pr2']/link[@name='base_laser_link']\n", "Unknown attribute \"type\" in /robot[@name='pr2']/link[@name='wide_stereo_optical_frame']\n", "Unknown attribute \"type\" in /robot[@name='pr2']/link[@name='narrow_stereo_optical_frame']\n", + "Unknown attribute \"type\" in /robot[@name='pr2']/link[@name='laser_tilt_link']\n", + "Unknown attribute \"type\" in /robot[@name='pr2']/link[@name='base_laser_link']\n", + "Unknown attribute \"type\" in /robot[@name='pr2']/link[@name='wide_stereo_optical_frame']\n", + "Unknown attribute \"type\" in /robot[@name='pr2']/link[@name='narrow_stereo_optical_frame']\n", "Unknown attribute \"type\" in /robot[@name='pr2']/link[@name='laser_tilt_link']\n" ] } @@ -54,9 +66,14 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 2, "id": "cc2e1bcd", - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2024-01-29T16:47:00.051774984Z", + "start_time": "2024-01-29T16:47:00.048239557Z" + } + }, "outputs": [], "source": [ "world.exit()" @@ -73,27 +90,36 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 3, "id": "ad9c75e3", - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2024-01-29T16:47:00.576314628Z", + "start_time": "2024-01-29T16:47:00.051456576Z" + } + }, "outputs": [], "source": [ + "from pycram.pose import Pose\n", "from pycram.designators.motion_designator import MoveMotion\n", "from pycram.process_module import simulated_robot\n", "\n", "with simulated_robot:\n", " motion_description = MoveMotion(target=Pose([1, 0, 0], [0, 0, 0, 1]))\n", " \n", - " motion_desig = motion_description.resolve()\n", - " \n", - " motion_desig.perform()" + " motion_description.perform()" ] }, { "cell_type": "code", "execution_count": 4, "id": "ac9f7766", - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2024-01-29T16:47:00.594527954Z", + "start_time": "2024-01-29T16:47:00.591545638Z" + } + }, "outputs": [], "source": [ "world.reset_bullet_world()" @@ -112,7 +138,12 @@ "cell_type": "code", "execution_count": 5, "id": "52aa961d", - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2024-01-29T16:47:01.122650746Z", + "start_time": "2024-01-29T16:47:00.593841452Z" + } + }, "outputs": [], "source": [ "from pycram.designators.motion_designator import MoveTCPMotion\n", @@ -121,7 +152,7 @@ "with simulated_robot:\n", " motion_description = MoveTCPMotion(target=Pose([0.5, 0.6, 0.6], [0, 0, 0, 1]), arm=\"left\")\n", " \n", - " motion_description.resolve().perform()" + " motion_description.perform()" ] }, { @@ -137,7 +168,12 @@ "cell_type": "code", "execution_count": 6, "id": "84ffcf03", - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2024-01-29T16:47:01.633288773Z", + "start_time": "2024-01-29T16:47:01.135133088Z" + } + }, "outputs": [], "source": [ "from pycram.designators.motion_designator import LookingMotion\n", @@ -146,7 +182,7 @@ "with simulated_robot:\n", " motion_description = LookingMotion(target=Pose([1, 1, 1], [0, 0, 0, 1]))\n", " \n", - " motion_description.resolve().perform()" + " motion_description.perform()" ] }, { @@ -155,14 +191,19 @@ "metadata": {}, "source": [ "## Move Gripper\n", - "Move gripper moves the gripper of an arm to one of two states. The states can be ```open``` and ```close```, which open and close the gripper respectivly." + "Move gripper moves the gripper of an arm to one of two states. The states can be ```open``` and ```close```, which open and close the gripper respectively." ] }, { "cell_type": "code", "execution_count": 7, "id": "f90adb34", - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2024-01-29T16:47:02.149528442Z", + "start_time": "2024-01-29T16:47:01.647168572Z" + } + }, "outputs": [], "source": [ "from pycram.designators.motion_designator import MoveGripperMotion\n", @@ -171,7 +212,7 @@ "with simulated_robot:\n", " motion_description = MoveGripperMotion(motion=\"open\", gripper=\"left\")\n", " \n", - " motion_description.resolve().perform()" + " motion_description.perform()" ] }, { @@ -189,7 +230,12 @@ "cell_type": "code", "execution_count": 8, "id": "4c9f3e27", - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2024-01-29T16:47:02.199992775Z", + "start_time": "2024-01-29T16:47:02.150827945Z" + } + }, "outputs": [], "source": [ "milk = Object(\"milk\", ObjectType.MILK, \"milk.stl\", pose=Pose([1.5, 0, 1]))" @@ -197,21 +243,26 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 9, "id": "27eae08a", - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2024-01-29T16:47:03.473751479Z", + "start_time": "2024-01-29T16:47:02.201339779Z" + } + }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "ObjectDesignatorDescription.Object(name=milk, type=ObjectType.MILK, bullet_world_object=Object(world=, \n", - "local_transformer=, \n", + "ObjectDesignatorDescription.Object(name=milk, type=ObjectType.MILK, bullet_world_object=Object(world=, \n", + "local_transformer=, \n", "name=milk, \n", "type=ObjectType.MILK, \n", "color=[1, 1, 1, 1], \n", "id=3, \n", - "path=/home/jdech/workspace/ros/src/pycram-1/src/pycram/../../resources/cached/milk.urdf, \n", + "path=/home/dprueser/workspace/ros/src/pycram/src/pycram/../../resources/cached/milk.urdf, \n", "joints: ..., \n", "links: ..., \n", "attachments: ..., \n", @@ -219,8 +270,8 @@ "original_pose=header: \n", " seq: 0\n", " stamp: \n", - " secs: 1699448584\n", - " nsecs: 433914899\n", + " secs: 1706546822\n", + " nsecs: 149801731\n", " frame_id: \"map\"\n", "pose: \n", " position: \n", @@ -237,8 +288,8 @@ "_current_pose=header: \n", " seq: 0\n", " stamp: \n", - " secs: 1699448584\n", - " nsecs: 433914899\n", + " secs: 1706546822\n", + " nsecs: 149801731\n", " frame_id: \"map\"\n", "pose: \n", " position: \n", @@ -250,48 +301,17 @@ " y: 0.0\n", " z: 0.0\n", " w: 1.0, \n", - "_current_link_poses={'milk_main': header: \n", - " seq: 0\n", - " stamp: \n", - " secs: 1699448584\n", - " nsecs: 433914899\n", - " frame_id: \"map\"\n", - "pose: \n", - " position: \n", - " x: 1.5\n", - " y: 0.0\n", - " z: 1.0\n", - " orientation: \n", - " x: 0.0\n", - " y: 0.0\n", - " z: 0.0\n", - " w: 1.0}, \n", - "_current_link_transforms={'milk_main': header: \n", - " seq: 0\n", - " stamp: \n", - " secs: 1699448598\n", - " nsecs: 510938167\n", - " frame_id: \"map\"\n", - "child_frame_id: \"milk_3\"\n", - "transform: \n", - " translation: \n", - " x: 1.5\n", - " y: 0.0\n", - " z: 1.0\n", - " rotation: \n", - " x: 0.0\n", - " y: 0.0\n", - " z: 0.0\n", - " w: 1.0}, \n", + "_current_link_poses: ..., \n", + "_current_link_transforms: ..., \n", "_current_joint_states={}, \n", "base_origin_shift=[ 4.15300950e-04 -6.29518181e-05 8.96554102e-02], \n", - "link_to_geometry={'milk_main': }), _pose=, \n", - "local_transformer=, \n", + "link_to_geometry: ...), _pose=, \n", + "local_transformer=, \n", "name=milk, \n", "type=ObjectType.MILK, \n", "color=[1, 1, 1, 1], \n", "id=3, \n", - "path=/home/jdech/workspace/ros/src/pycram-1/src/pycram/../../resources/cached/milk.urdf, \n", + "path=/home/dprueser/workspace/ros/src/pycram/src/pycram/../../resources/cached/milk.urdf, \n", "joints: ..., \n", "links: ..., \n", "attachments: ..., \n", @@ -299,8 +319,8 @@ "original_pose=header: \n", " seq: 0\n", " stamp: \n", - " secs: 1699448584\n", - " nsecs: 433914899\n", + " secs: 1706546822\n", + " nsecs: 149801731\n", " frame_id: \"map\"\n", "pose: \n", " position: \n", @@ -317,8 +337,8 @@ "_current_pose=header: \n", " seq: 0\n", " stamp: \n", - " secs: 1699448584\n", - " nsecs: 433914899\n", + " secs: 1706546822\n", + " nsecs: 149801731\n", " frame_id: \"map\"\n", "pose: \n", " position: \n", @@ -330,46 +350,15 @@ " y: 0.0\n", " z: 0.0\n", " w: 1.0, \n", - "_current_link_poses={'milk_main': header: \n", - " seq: 0\n", - " stamp: \n", - " secs: 1699448584\n", - " nsecs: 433914899\n", - " frame_id: \"map\"\n", - "pose: \n", - " position: \n", - " x: 1.5\n", - " y: 0.0\n", - " z: 1.0\n", - " orientation: \n", - " x: 0.0\n", - " y: 0.0\n", - " z: 0.0\n", - " w: 1.0}, \n", - "_current_link_transforms={'milk_main': header: \n", - " seq: 0\n", - " stamp: \n", - " secs: 1699448598\n", - " nsecs: 510938167\n", - " frame_id: \"map\"\n", - "child_frame_id: \"milk_3\"\n", - "transform: \n", - " translation: \n", - " x: 1.5\n", - " y: 0.0\n", - " z: 1.0\n", - " rotation: \n", - " x: 0.0\n", - " y: 0.0\n", - " z: 0.0\n", - " w: 1.0}, \n", + "_current_link_poses: ..., \n", + "_current_link_transforms: ..., \n", "_current_joint_states={}, \n", "base_origin_shift=[ 4.15300950e-04 -6.29518181e-05 8.96554102e-02], \n", - "link_to_geometry={'milk_main': })>, pose=header: \n", + "link_to_geometry: ...)>, pose=header: \n", " seq: 0\n", " stamp: \n", - " secs: 1699448584\n", - " nsecs: 433914899\n", + " secs: 1706546822\n", + " nsecs: 149801731\n", " frame_id: \"map\"\n", "pose: \n", " position: \n", @@ -389,11 +378,11 @@ "from pycram.process_module import simulated_robot\n", "\n", "with simulated_robot:\n", - " LookingMotion(target=Pose([1.5, 0, 1], [0, 0, 0, 1])).resolve().perform()\n", + " LookingMotion(target=Pose([1.5, 0, 1], [0, 0, 0, 1])).perform()\n", " \n", " motion_description = DetectingMotion(object_type=ObjectType.MILK)\n", " \n", - " obj = motion_description.resolve().perform()\n", + " obj = motion_description.perform()\n", " \n", " print(obj)" ] @@ -404,23 +393,28 @@ "metadata": {}, "source": [ "## Move Arm Joints\n", - "This motion designator moves one or both arms. Movement targets can either be a dictionary with joint name as key and target pose as value or a pre-defined configuration like 'park'." + "This motion designator moves one or both arms. Movement targets are a dictionary with joint name as key and target pose as value. " ] }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 10, "id": "ce7655c1", - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2024-01-29T16:47:03.979196754Z", + "start_time": "2024-01-29T16:47:03.482859314Z" + } + }, "outputs": [], "source": [ "from pycram.designators.motion_designator import MoveArmJointsMotion\n", "from pycram.process_module import simulated_robot\n", "\n", "with simulated_robot:\n", - " motion_description = MoveArmJointsMotion(left_arm_config=\"park\", right_arm_poses={\"r_shoulder_pan_joint\": -0.7})\n", + " motion_description = MoveArmJointsMotion(right_arm_poses={\"r_shoulder_pan_joint\": -0.7})\n", " \n", - " motion_description.resolve().perform()" + " motion_description.perform()" ] }, { @@ -429,16 +423,21 @@ "metadata": {}, "source": [ "## World State Detecting\n", - "World state detecting is also used to detect objects, however, the object is not required to be in the FOV of the robot. As long as the object is somewhere in the beliefe state (BulletWorld) a resolved object designator will be returned.\n", + "World state detecting is also used to detect objects, however, the object is not required to be in the FOV of the robot. As long as the object is somewhere in the belief state (BulletWorld) a resolved object designator will be returned.\n", "\n", - "Sine we want to detect something we will spawn an object that we can detect. If you already spawned the milk the the previous example you can skip this step." + "Sine we want to detect something we will spawn an object that we can detect. If you already spawned the milk from the previous example, you can skip this step." ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 11, "id": "0f9f0ca8", - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2024-01-29T16:47:04.035948673Z", + "start_time": "2024-01-29T16:47:03.980202995Z" + } + }, "outputs": [], "source": [ "milk = Object(\"milk\", ObjectType.MILK, \"milk.stl\", pose=Pose([-1, 0, 1]))" @@ -446,21 +445,26 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 12, "id": "4382bfa3", - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2024-01-29T16:47:04.540918323Z", + "start_time": "2024-01-29T16:47:04.035986657Z" + } + }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Object(world=, \n", - "local_transformer=, \n", + "Object(world=, \n", + "local_transformer=, \n", "name=milk, \n", "type=ObjectType.MILK, \n", "color=[1, 1, 1, 1], \n", "id=3, \n", - "path=/home/jdech/workspace/ros/src/pycram-1/src/pycram/../../resources/cached/milk.urdf, \n", + "path=/home/dprueser/workspace/ros/src/pycram/src/pycram/../../resources/cached/milk.urdf, \n", "joints: ..., \n", "links: ..., \n", "attachments: ..., \n", @@ -468,8 +472,8 @@ "original_pose=header: \n", " seq: 0\n", " stamp: \n", - " secs: 1699448584\n", - " nsecs: 433914899\n", + " secs: 1706546822\n", + " nsecs: 149801731\n", " frame_id: \"map\"\n", "pose: \n", " position: \n", @@ -486,8 +490,8 @@ "_current_pose=header: \n", " seq: 0\n", " stamp: \n", - " secs: 1699448584\n", - " nsecs: 433914899\n", + " secs: 1706546822\n", + " nsecs: 149801731\n", " frame_id: \"map\"\n", "pose: \n", " position: \n", @@ -499,42 +503,11 @@ " y: 0.0\n", " z: 0.0\n", " w: 1.0, \n", - "_current_link_poses={'milk_main': header: \n", - " seq: 0\n", - " stamp: \n", - " secs: 1699448584\n", - " nsecs: 433914899\n", - " frame_id: \"map\"\n", - "pose: \n", - " position: \n", - " x: 1.5\n", - " y: 0.0\n", - " z: 1.0\n", - " orientation: \n", - " x: 0.0\n", - " y: 0.0\n", - " z: 0.0\n", - " w: 1.0}, \n", - "_current_link_transforms={'milk_main': header: \n", - " seq: 0\n", - " stamp: \n", - " secs: 1699448598\n", - " nsecs: 510938167\n", - " frame_id: \"map\"\n", - "child_frame_id: \"milk_3\"\n", - "transform: \n", - " translation: \n", - " x: 1.5\n", - " y: 0.0\n", - " z: 1.0\n", - " rotation: \n", - " x: 0.0\n", - " y: 0.0\n", - " z: 0.0\n", - " w: 1.0}, \n", + "_current_link_poses: ..., \n", + "_current_link_transforms: ..., \n", "_current_joint_states={}, \n", "base_origin_shift=[ 4.15300950e-04 -6.29518181e-05 8.96554102e-02], \n", - "link_to_geometry={'milk_main': })\n" + "link_to_geometry: ...)\n" ] } ], @@ -545,7 +518,7 @@ "with simulated_robot:\n", " motion_description = WorldStateDetectingMotion(object_type=ObjectType.MILK)\n", " \n", - " obj = motion_description.resolve().perform()\n", + " obj = motion_description.perform()\n", " \n", " print(obj)" ] @@ -561,9 +534,14 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 13, "id": "1e0191c8", - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2024-01-29T16:47:05.046180891Z", + "start_time": "2024-01-29T16:47:04.548113629Z" + } + }, "outputs": [], "source": [ "from pycram.designators.motion_designator import MoveJointsMotion\n", @@ -572,7 +550,7 @@ "with simulated_robot:\n", " motion_description = MoveJointsMotion(names=[\"torso_lift_joint\", \"r_shoulder_pan_joint\"], positions=[0.2, -1.2])\n", " \n", - " motion_description.resolve().perform()" + " motion_description.perform()" ] } ], diff --git a/examples/object_designator.ipynb b/examples/object_designator.ipynb index bd03c2d3c..b5c09ca0b 100644 --- a/examples/object_designator.ipynb +++ b/examples/object_designator.ipynb @@ -6,11 +6,11 @@ "metadata": {}, "source": [ "# Object Designator\n", - "Object designator are used to describe objects located in the BulletWorld or the real environment and then resolve them during runtime to concrete objects.\n", + "Object designators are used to describe objects located in the BulletWorld or the real environment and then resolve them during runtime to concrete objects.\n", "\n", - "Object designator are different from the Object class in bullet_world.py in the way that they just describe an object and do not create objects or provide methods to manipulate them. Nethertheless, object designator contain a reference to the BulletWorld object.\n", + "Object designators are different from the Object class in bullet_world.py in the way that they just describe an object and do not create objects or provide methods to manipulate them. Nevertheless, object designators contain a reference to the BulletWorld object.\n", "\n", - "Object designator take two parameter, of which at least one has to be provided. These parameter are:\n", + "An Object designator takes two parameters, of which at least one has to be provided. These parameters are:\n", "\n", " * A list of names \n", " * A list of types \n", @@ -61,9 +61,9 @@ "metadata": {}, "source": [ "## Believe Object\n", - "This object designator is used to describe object that are located in the BulletWorld. So objects that are in the believe state, hence the name. In the futre when there is a perception interface there will be a ```RealObject``` description which will be used to describe objects in the real world. \n", + "This object designator is used to describe objects that are located in the BulletWorld. So objects that are in the belief state, hence the name. In the future when there is a perception interface, there will be a ```RealObject``` description which will be used to describe objects in the real world. \n", "\n", - "Since ```BelieveObject``` decribes Objects in the BulletWorld we create a few." + "Since ```BelieveObject``` describes Objects in the BulletWorld we create a few." ] }, { @@ -474,7 +474,7 @@ "metadata": {}, "source": [ "## Object Part \n", - "Part of object designators can be used to describe describe something as part of another obeject. For example, you could describe a specific drawer as part of the kitchen. This is necessary since the drawer is no single BulletWorld Object but rather a link of the kitchen which is a BulletWorld Object.\n", + "Part of object designators can be used to describe something as part of another object. For example, you could describe a specific drawer as part of the kitchen. This is necessary since the drawer is no single BulletWorld Object but rather a link of the kitchen which is a BulletWorld Object.\n", "\n", "For this example we need just need the kitchen, if you didn't spawn it in the previous example you can spawn it with the following cell." ] @@ -513,7 +513,7 @@ "## Object Designators as Generators \n", "Similar to location designators object designators can be used as generators to iterate through every object that they are describing. We will see this at the example of an object designator describing every type of food. \n", "\n", - "For this we need some obejcts, so if you didn't already spawn them you can use the next cell for this." + "For this we need some objects, so if you didn't already spawn them you can use the next cell for this." ] }, { @@ -861,8 +861,7 @@ " w: 1.0}, \n", "_current_joint_states={}, \n", "base_origin_shift=[0.00124406 0.00101732 0.1038567 ], \n", - "link_to_geometry={'cereal_main': })>) \n", - "\n" + "link_to_geometry={'cereal_main': })>) \n" ] } ], diff --git a/examples/orm_example.ipynb b/examples/orm_example.ipynb index 20a3a4532..6eca63f84 100644 --- a/examples/orm_example.ipynb +++ b/examples/orm_example.ipynb @@ -15,14 +15,14 @@ "execution_count": 1, "metadata": { "ExecuteTime": { - "end_time": "2023-12-13T10:22:05.213398212Z", - "start_time": "2023-12-13T10:22:05.061219318Z" + "end_time": "2024-01-29T16:51:09.128875369Z", + "start_time": "2024-01-29T16:51:08.956260897Z" } }, "outputs": [ { "data": { - "text/plain": "" + "text/plain": "" }, "execution_count": 1, "metadata": {}, @@ -50,8 +50,8 @@ "execution_count": 2, "metadata": { "ExecuteTime": { - "end_time": "2023-12-13T10:22:05.758910570Z", - "start_time": "2023-12-13T10:22:05.211301707Z" + "end_time": "2024-01-29T16:51:09.568683265Z", + "start_time": "2024-01-29T16:51:09.124071834Z" } }, "outputs": [ @@ -64,8 +64,8 @@ "Unknown attribute \"type\" in /robot[@name='pr2']/link[@name='wide_stereo_optical_frame']\n", "Unknown attribute \"type\" in /robot[@name='pr2']/link[@name='narrow_stereo_optical_frame']\n", "Unknown attribute \"type\" in /robot[@name='pr2']/link[@name='laser_tilt_link']\n", - "[WARN] [1702462925.736253]: Could not import RoboKudo messages, RoboKudo interface could not be initialized\n", - "[WARN] [1702462925.741150]: Failed to import Giskard messages\n" + "[WARN] [1706547069.541495]: Failed to import Giskard messages\n", + "[WARN] [1706547069.546682]: Could not import RoboKudo messages, RoboKudo interface could not be initialized\n" ] } ], @@ -88,8 +88,8 @@ "execution_count": 3, "metadata": { "ExecuteTime": { - "end_time": "2023-12-13T10:22:25.532059166Z", - "start_time": "2023-12-13T10:22:05.759939989Z" + "end_time": "2024-01-29T16:51:35.305706324Z", + "start_time": "2024-01-29T16:51:09.568597034Z" } }, "outputs": [ @@ -105,38 +105,86 @@ "Unknown attribute \"type\" in /robot[@name='pr2']/link[@name='laser_tilt_link']\n", "Unknown tag \"material\" in /robot[@name='plane']/link[@name='planeLink']/collision[1]\n", "Unknown tag \"contact\" in /robot[@name='plane']/link[@name='planeLink']\n", - "Scalar element defined multiple times: limit\n", "Unknown attribute \"type\" in /robot[@name='pr2']/link[@name='base_laser_link']\n", "Unknown attribute \"type\" in /robot[@name='pr2']/link[@name='wide_stereo_optical_frame']\n", "Unknown attribute \"type\" in /robot[@name='pr2']/link[@name='narrow_stereo_optical_frame']\n", "Unknown attribute \"type\" in /robot[@name='pr2']/link[@name='laser_tilt_link']\n", + "Scalar element defined multiple times: limit\n", "Scalar element defined multiple times: limit\n" ] }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "startThreads creating 1 threads.\n", + "starting thread 0\n", + "started thread 0 \n", + "argc=2\n", + "argv[0] = --unused\n", + "argv[1] = --start_demo_name=Physics Server\n", + "ExampleBrowserThreadFunc started\n", + "X11 functions dynamically loaded using dlopen/dlsym OK!\n", + "X11 functions dynamically loaded using dlopen/dlsym OK!\n", + "Creating context\n", + "Created GL 3.3 context\n", + "Direct GLX rendering context obtained\n", + "Making context current\n", + "GL_VENDOR=AMD\n", + "GL_RENDERER=AMD Radeon RX 6700 XT (NAVY_FLOUNDER, DRM 3.42.0, 5.15.0-89-generic, LLVM 12.0.0)\n", + "GL_VERSION=4.6 (Core Profile) Mesa 21.2.6\n", + "GL_SHADING_LANGUAGE_VERSION=4.60\n", + "pthread_getconcurrency()=0\n", + "Version = 4.6 (Core Profile) Mesa 21.2.6\n", + "Vendor = AMD\n", + "Renderer = AMD Radeon RX 6700 XT (NAVY_FLOUNDER, DRM 3.42.0, 5.15.0-89-generic, LLVM 12.0.0)\n", + "b3Printf: Selected demo: Physics Server\n", + "startThreads creating 1 threads.\n", + "starting thread 0\n", + "started thread 0 \n", + "MotionThreadFunc thread started\n", + "ven = AMD\n", + "ven = AMD\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Warning: TF_REPEATED_DATA ignoring data with redundant timestamp for frame shadow/pr2_1/r_gripper_r_finger_tip_link (parent map) at time 1706547087.197074 according to authority default_authority\n", + " at line 278 in /tmp/binarydeb/ros-noetic-tf2-0.7.7/src/buffer_core.cpp\n", + "Warning: TF_REPEATED_DATA ignoring data with redundant timestamp for frame shadow/pr2_1/r_gripper_palm_link (parent map) at time 1706547087.480158 according to authority default_authority\n", + " at line 278 in /tmp/binarydeb/ros-noetic-tf2-0.7.7/src/buffer_core.cpp\n", + "Warning: TF_REPEATED_DATA ignoring data with redundant timestamp for frame shadow/pr2_1/projector_wg6802418_child_frame (parent map) at time 1706547089.689294 according to authority default_authority\n", + " at line 278 in /tmp/binarydeb/ros-noetic-tf2-0.7.7/src/buffer_core.cpp\n", + "Warning: TF_REPEATED_DATA ignoring data with redundant timestamp for frame shadow/pr2_1/l_shoulder_pan_link (parent map) at time 1706547092.019791 according to authority default_authority\n", + " at line 278 in /tmp/binarydeb/ros-noetic-tf2-0.7.7/src/buffer_core.cpp\n" + ] + }, { "name": "stdout", "output_type": "stream", "text": [ "no_operation()\n", "└── plan()\n", - " ├── perform(ParkArmsAction, )\n", - " ├── perform(MoveTorsoAction, )\n", - " ├── perform(NavigateAction, )\n", - " │ └── perform(MoveMotion, )\n", - " ├── perform(PickUpAction, )\n", - " │ ├── perform(MoveTCPMotion, )\n", - " │ ├── perform(MoveGripperMotion, )\n", - " │ ├── perform(MoveTCPMotion, )\n", - " │ ├── perform(MoveGripperMotion, )\n", - " │ └── perform(MoveTCPMotion, )\n", - " ├── perform(ParkArmsAction, )\n", - " ├── perform(NavigateAction, )\n", - " │ └── perform(MoveMotion, )\n", - " ├── perform(PlaceAction, )\n", - " │ ├── perform(MoveTCPMotion, )\n", - " │ ├── perform(MoveGripperMotion, )\n", - " │ └── perform(MoveTCPMotion, )\n", - " └── perform(ParkArmsAction, )\n" + " ├── perform(ParkArmsActionPerformable)\n", + " ├── perform(MoveTorsoActionPerformable)\n", + " ├── perform(NavigateActionPerformable)\n", + " │ └── perform(MoveMotion)\n", + " ├── perform(PickUpActionPerformable)\n", + " │ ├── perform(MoveTCPMotion)\n", + " │ ├── perform(MoveGripperMotion)\n", + " │ ├── perform(MoveTCPMotion)\n", + " │ ├── perform(MoveGripperMotion)\n", + " │ └── perform(MoveTCPMotion)\n", + " ├── perform(ParkArmsActionPerformable)\n", + " ├── perform(NavigateActionPerformable)\n", + " │ └── perform(MoveMotion)\n", + " ├── perform(PlaceActionPerformable)\n", + " │ ├── perform(MoveTCPMotion)\n", + " │ ├── perform(MoveGripperMotion)\n", + " │ └── perform(MoveTCPMotion)\n", + " └── perform(ParkArmsActionPerformable)\n" ] } ], @@ -165,7 +213,7 @@ "@with_tree\n", "def plan():\n", " with simulated_robot:\n", - " ParkArmsAction.Action(Arms.BOTH).perform()\n", + " ParkArmsActionPerformable(Arms.BOTH).perform()\n", " MoveTorsoAction([0.3]).resolve().perform()\n", " pickup_pose = CostmapLocation(target=cereal_desig.resolve(), reachable_for=robot_desig).resolve()\n", " pickup_arm = pickup_pose.reachable_arms[0]\n", @@ -182,7 +230,7 @@ "\n", " PlaceAction(cereal_desig, target_locations=[place_island.pose], arms=[pickup_arm]).resolve().perform()\n", "\n", - " ParkArmsAction.Action(Arms.BOTH).perform()\n", + " ParkArmsActionPerformable(Arms.BOTH).perform()\n", "\n", "plan()\n", "\n", @@ -204,8 +252,8 @@ "execution_count": 4, "metadata": { "ExecuteTime": { - "end_time": "2023-12-13T10:22:25.715646672Z", - "start_time": "2023-12-13T10:22:25.534065783Z" + "end_time": "2024-01-29T16:51:35.505074180Z", + "start_time": "2024-01-29T16:51:35.307461245Z" } }, "outputs": [ @@ -213,12 +261,12 @@ "name": "stderr", "output_type": "stream", "text": [ - "Inserting TaskTree into database: 100%|██████████| 20/20 [00:00<00:00, 114.02it/s]\n" + "Inserting TaskTree into database: 100%|██████████| 20/20 [00:00<00:00, 105.04it/s]\n" ] }, { "data": { - "text/plain": "TaskTreeNode(id=1, code_id=1, code=Code(id=1, function='no_operation', designator_id=None, designator=None, process_metadata_id=1), start_time=datetime.datetime(2023, 12, 13, 11, 22, 5, 734143), end_time=None, status=, reason=None, parent_id=None, parent=None, process_metadata_id=1)" + "text/plain": "TaskTreeNode(id=1, code_id=1, code=Code(id=1, function='no_operation', designator_id=None, designator=None, process_metadata_id=1), start_time=datetime.datetime(2024, 1, 29, 17, 51, 9, 545708), end_time=None, status=, reason=None, parent_id=None, parent=None, process_metadata_id=1)" }, "execution_count": 4, "metadata": {}, @@ -241,8 +289,8 @@ "execution_count": 5, "metadata": { "ExecuteTime": { - "end_time": "2023-12-13T10:22:25.720098203Z", - "start_time": "2023-12-13T10:22:25.717086864Z" + "end_time": "2024-01-29T16:51:35.508649071Z", + "start_time": "2024-01-29T16:51:35.506023628Z" } }, "outputs": [ @@ -250,12 +298,14 @@ "name": "stdout", "output_type": "stream", "text": [ - "ProcessMetaData(id=1, created_at=datetime.datetime(2023, 12, 13, 10, 22, 25), created_by='dprueser', description='Tutorial for getting familiar with the ORM.', pycram_version='3422aa2a9097bcb087795fccf89e5bd128ab21dd')\n" + "ProcessMetaData(id=1, created_at=datetime.datetime(2024, 1, 29, 16, 51, 35), created_by='dprueser', description='Tutorial for getting familiar with the ORM.', pycram_version='5e32afdb9ba57a9d6befec2c78087fee1f5e5d9b')\n" ] } ], "source": [ - "print(*session.query(pycram.orm.base.ProcessMetaData).all())" + "from sqlalchemy import select\n", + "\n", + "print(*session.scalars(select(pycram.orm.base.ProcessMetaData)).all())" ] }, { @@ -271,8 +321,8 @@ "execution_count": 6, "metadata": { "ExecuteTime": { - "end_time": "2023-12-13T10:22:25.774954933Z", - "start_time": "2023-12-13T10:22:25.719710555Z" + "end_time": "2024-01-29T16:51:35.520518056Z", + "start_time": "2024-01-29T16:51:35.508477111Z" } }, "outputs": [ @@ -286,7 +336,7 @@ } ], "source": [ - "navigations = session.query(pycram.orm.action_designator.NavigateAction).all()\n", + "navigations = session.scalars(select(pycram.orm.action_designator.NavigateAction)).all()\n", "print(*navigations, sep=\"\\n\")" ] }, @@ -302,8 +352,8 @@ "execution_count": 7, "metadata": { "ExecuteTime": { - "end_time": "2023-12-13T10:22:25.775554799Z", - "start_time": "2023-12-13T10:22:25.774858881Z" + "end_time": "2024-01-29T16:51:35.560192686Z", + "start_time": "2024-01-29T16:51:35.520628950Z" } }, "outputs": [ @@ -323,7 +373,7 @@ } ], "source": [ - "actions = session.query(pycram.orm.action_designator.Action).all()\n", + "actions = session.scalars(select(pycram.orm.action_designator.Action)).all()\n", "print(*actions, sep=\"\\n\")" ] }, @@ -339,8 +389,8 @@ "execution_count": 8, "metadata": { "ExecuteTime": { - "end_time": "2023-12-13T10:22:25.775915781Z", - "start_time": "2023-12-13T10:22:25.774973642Z" + "end_time": "2024-01-29T16:51:35.561234983Z", + "start_time": "2024-01-29T16:51:35.535162323Z" } }, "outputs": [ @@ -348,14 +398,14 @@ "name": "stdout", "output_type": "stream", "text": [ - "Pose(id=7, time=datetime.datetime(2023, 12, 13, 10, 22, 12, 75413), frame='map', position_id=7, orientation_id=7, process_metadata_id=1)\n" + "Pose(id=7, time=datetime.datetime(2024, 1, 29, 16, 51, 15, 804838), frame='map', position_id=7, orientation_id=7, process_metadata_id=1)\n" ] } ], "source": [ - "object_actions = (session.query(pycram.orm.base.Pose)\n", + "object_actions = (session.scalars(select(pycram.orm.base.Pose)\n", " .join(pycram.orm.action_designator.PickUpAction.object)\n", - " .join(pycram.orm.object_designator.Object.pose)\n", + " .join(pycram.orm.object_designator.Object.pose))\n", " .all())\n", "print(*object_actions, sep=\"\\n\")\n" ] @@ -384,8 +434,8 @@ "execution_count": 9, "metadata": { "ExecuteTime": { - "end_time": "2023-12-13T10:22:25.776819211Z", - "start_time": "2023-12-13T10:22:25.775011202Z" + "end_time": "2024-01-29T16:51:35.600701170Z", + "start_time": "2024-01-29T16:51:35.539887927Z" } }, "outputs": [ @@ -393,30 +443,30 @@ "name": "stdout", "output_type": "stream", "text": [ - "TaskTreeNode(id=2, code_id=2, code=Code(id=2, function='plan', designator_id=None, designator=None, process_metadata_id=1), start_time=datetime.datetime(2023, 12, 13, 11, 22, 12, 144277), end_time=datetime.datetime(2023, 12, 13, 11, 22, 25, 498607), status=, reason=None, parent_id=1, parent=TaskTreeNode(id=1, code_id=1, code=Code(id=1, function='no_operation', designator_id=None, designator=None, process_metadata_id=1), start_time=datetime.datetime(2023, 12, 13, 11, 22, 5, 734143), end_time=None, status=, reason=None, parent_id=None, parent=None, process_metadata_id=1), process_metadata_id=1)\n", - "TaskTreeNode(id=3, code_id=3, code=Code(id=3, function='perform', designator_id=1, designator=ParkArmsAction(id=1, process_metadata_id=1, dtype='ParkArmsAction', robot_state_id=1, robot_state=RobotState(id=1, torso_height=0.0, type=, pose_id=1, process_metadata_id=1), arm=), process_metadata_id=1), start_time=datetime.datetime(2023, 12, 13, 11, 22, 12, 144323), end_time=datetime.datetime(2023, 12, 13, 11, 22, 12, 650626), status=, reason=None, parent_id=2, parent=TaskTreeNode(id=2, code_id=2, code=Code(id=2, function='plan', designator_id=None, designator=None, process_metadata_id=1), start_time=datetime.datetime(2023, 12, 13, 11, 22, 12, 144277), end_time=datetime.datetime(2023, 12, 13, 11, 22, 25, 498607), status=, reason=None, parent_id=1, parent=TaskTreeNode(id=1, code_id=1, code=Code(id=1, function='no_operation', designator_id=None, designator=None, process_metadata_id=1), start_time=datetime.datetime(2023, 12, 13, 11, 22, 5, 734143), end_time=None, status=, reason=None, parent_id=None, parent=None, process_metadata_id=1), process_metadata_id=1), process_metadata_id=1)\n", - "TaskTreeNode(id=4, code_id=4, code=Code(id=4, function='perform', designator_id=2, designator=MoveTorsoAction(id=2, process_metadata_id=1, dtype='MoveTorsoAction', robot_state_id=2, robot_state=RobotState(id=2, torso_height=0.0, type=, pose_id=2, process_metadata_id=1), position=0.3), process_metadata_id=1), start_time=datetime.datetime(2023, 12, 13, 11, 22, 12, 650720), end_time=datetime.datetime(2023, 12, 13, 11, 22, 13, 154581), status=, reason=None, parent_id=2, parent=TaskTreeNode(id=2, code_id=2, code=Code(id=2, function='plan', designator_id=None, designator=None, process_metadata_id=1), start_time=datetime.datetime(2023, 12, 13, 11, 22, 12, 144277), end_time=datetime.datetime(2023, 12, 13, 11, 22, 25, 498607), status=, reason=None, parent_id=1, parent=TaskTreeNode(id=1, code_id=1, code=Code(id=1, function='no_operation', designator_id=None, designator=None, process_metadata_id=1), start_time=datetime.datetime(2023, 12, 13, 11, 22, 5, 734143), end_time=None, status=, reason=None, parent_id=None, parent=None, process_metadata_id=1), process_metadata_id=1), process_metadata_id=1)\n", - "TaskTreeNode(id=5, code_id=5, code=Code(id=5, function='perform', designator_id=3, designator=NavigateAction(id=3, process_metadata_id=1, dtype='NavigateAction', robot_state_id=3, robot_state=RobotState(id=3, torso_height=0.3, type=, pose_id=3, process_metadata_id=1), pose_id=4), process_metadata_id=1), start_time=datetime.datetime(2023, 12, 13, 11, 22, 13, 704577), end_time=datetime.datetime(2023, 12, 13, 11, 22, 14, 214635), status=, reason=None, parent_id=2, parent=TaskTreeNode(id=2, code_id=2, code=Code(id=2, function='plan', designator_id=None, designator=None, process_metadata_id=1), start_time=datetime.datetime(2023, 12, 13, 11, 22, 12, 144277), end_time=datetime.datetime(2023, 12, 13, 11, 22, 25, 498607), status=, reason=None, parent_id=1, parent=TaskTreeNode(id=1, code_id=1, code=Code(id=1, function='no_operation', designator_id=None, designator=None, process_metadata_id=1), start_time=datetime.datetime(2023, 12, 13, 11, 22, 5, 734143), end_time=None, status=, reason=None, parent_id=None, parent=None, process_metadata_id=1), process_metadata_id=1), process_metadata_id=1)\n", - "TaskTreeNode(id=6, code_id=6, code=Code(id=6, function='perform', designator_id=4, designator=MoveMotion(id=4, process_metadata_id=1, dtype='MoveMotion', pose_id=5), process_metadata_id=1), start_time=datetime.datetime(2023, 12, 13, 11, 22, 13, 704616), end_time=datetime.datetime(2023, 12, 13, 11, 22, 14, 214628), status=, reason=None, parent_id=5, parent=TaskTreeNode(id=5, code_id=5, code=Code(id=5, function='perform', designator_id=3, designator=NavigateAction(id=3, process_metadata_id=1, dtype='NavigateAction', robot_state_id=3, robot_state=RobotState(id=3, torso_height=0.3, type=, pose_id=3, process_metadata_id=1), pose_id=4), process_metadata_id=1), start_time=datetime.datetime(2023, 12, 13, 11, 22, 13, 704577), end_time=datetime.datetime(2023, 12, 13, 11, 22, 14, 214635), status=, reason=None, parent_id=2, parent=TaskTreeNode(id=2, code_id=2, code=Code(id=2, function='plan', designator_id=None, designator=None, process_metadata_id=1), start_time=datetime.datetime(2023, 12, 13, 11, 22, 12, 144277), end_time=datetime.datetime(2023, 12, 13, 11, 22, 25, 498607), status=, reason=None, parent_id=1, parent=TaskTreeNode(id=1, code_id=1, code=Code(id=1, function='no_operation', designator_id=None, designator=None, process_metadata_id=1), start_time=datetime.datetime(2023, 12, 13, 11, 22, 5, 734143), end_time=None, status=, reason=None, parent_id=None, parent=None, process_metadata_id=1), process_metadata_id=1), process_metadata_id=1), process_metadata_id=1)\n", - "TaskTreeNode(id=7, code_id=7, code=Code(id=7, function='perform', designator_id=5, designator=PickUpAction(id=5, process_metadata_id=1, dtype='PickUpAction', robot_state_id=4, robot_state=RobotState(id=4, torso_height=0.3, type=, pose_id=6, process_metadata_id=1), arm='left', grasp='front', object_id=1), process_metadata_id=1), start_time=datetime.datetime(2023, 12, 13, 11, 22, 14, 214734), end_time=datetime.datetime(2023, 12, 13, 11, 22, 17, 504156), status=, reason=None, parent_id=2, parent=TaskTreeNode(id=2, code_id=2, code=Code(id=2, function='plan', designator_id=None, designator=None, process_metadata_id=1), start_time=datetime.datetime(2023, 12, 13, 11, 22, 12, 144277), end_time=datetime.datetime(2023, 12, 13, 11, 22, 25, 498607), status=, reason=None, parent_id=1, parent=TaskTreeNode(id=1, code_id=1, code=Code(id=1, function='no_operation', designator_id=None, designator=None, process_metadata_id=1), start_time=datetime.datetime(2023, 12, 13, 11, 22, 5, 734143), end_time=None, status=, reason=None, parent_id=None, parent=None, process_metadata_id=1), process_metadata_id=1), process_metadata_id=1)\n", - "TaskTreeNode(id=8, code_id=8, code=Code(id=8, function='perform', designator_id=6, designator=MoveTCPMotion(id=6, process_metadata_id=1, dtype='MoveTCPMotion', arm='left', allow_gripper_collision=None, pose_id=8), process_metadata_id=1), start_time=datetime.datetime(2023, 12, 13, 11, 22, 14, 385460), end_time=datetime.datetime(2023, 12, 13, 11, 22, 14, 894615), status=, reason=None, parent_id=7, parent=TaskTreeNode(id=7, code_id=7, code=Code(id=7, function='perform', designator_id=5, designator=PickUpAction(id=5, process_metadata_id=1, dtype='PickUpAction', robot_state_id=4, robot_state=RobotState(id=4, torso_height=0.3, type=, pose_id=6, process_metadata_id=1), arm='left', grasp='front', object_id=1), process_metadata_id=1), start_time=datetime.datetime(2023, 12, 13, 11, 22, 14, 214734), end_time=datetime.datetime(2023, 12, 13, 11, 22, 17, 504156), status=, reason=None, parent_id=2, parent=TaskTreeNode(id=2, code_id=2, code=Code(id=2, function='plan', designator_id=None, designator=None, process_metadata_id=1), start_time=datetime.datetime(2023, 12, 13, 11, 22, 12, 144277), end_time=datetime.datetime(2023, 12, 13, 11, 22, 25, 498607), status=, reason=None, parent_id=1, parent=TaskTreeNode(id=1, code_id=1, code=Code(id=1, function='no_operation', designator_id=None, designator=None, process_metadata_id=1), start_time=datetime.datetime(2023, 12, 13, 11, 22, 5, 734143), end_time=None, status=, reason=None, parent_id=None, parent=None, process_metadata_id=1), process_metadata_id=1), process_metadata_id=1), process_metadata_id=1)\n", - "TaskTreeNode(id=9, code_id=9, code=Code(id=9, function='perform', designator_id=7, designator=MoveGripperMotion(id=7, process_metadata_id=1, dtype='MoveGripperMotion', motion='open', gripper='left', allow_gripper_collision=None), process_metadata_id=1), start_time=datetime.datetime(2023, 12, 13, 11, 22, 14, 894706), end_time=datetime.datetime(2023, 12, 13, 11, 22, 15, 402177), status=, reason=None, parent_id=7, parent=TaskTreeNode(id=7, code_id=7, code=Code(id=7, function='perform', designator_id=5, designator=PickUpAction(id=5, process_metadata_id=1, dtype='PickUpAction', robot_state_id=4, robot_state=RobotState(id=4, torso_height=0.3, type=, pose_id=6, process_metadata_id=1), arm='left', grasp='front', object_id=1), process_metadata_id=1), start_time=datetime.datetime(2023, 12, 13, 11, 22, 14, 214734), end_time=datetime.datetime(2023, 12, 13, 11, 22, 17, 504156), status=, reason=None, parent_id=2, parent=TaskTreeNode(id=2, code_id=2, code=Code(id=2, function='plan', designator_id=None, designator=None, process_metadata_id=1), start_time=datetime.datetime(2023, 12, 13, 11, 22, 12, 144277), end_time=datetime.datetime(2023, 12, 13, 11, 22, 25, 498607), status=, reason=None, parent_id=1, parent=TaskTreeNode(id=1, code_id=1, code=Code(id=1, function='no_operation', designator_id=None, designator=None, process_metadata_id=1), start_time=datetime.datetime(2023, 12, 13, 11, 22, 5, 734143), end_time=None, status=, reason=None, parent_id=None, parent=None, process_metadata_id=1), process_metadata_id=1), process_metadata_id=1), process_metadata_id=1)\n", - "TaskTreeNode(id=10, code_id=10, code=Code(id=10, function='perform', designator_id=8, designator=MoveTCPMotion(id=8, process_metadata_id=1, dtype='MoveTCPMotion', arm='left', allow_gripper_collision=None, pose_id=9), process_metadata_id=1), start_time=datetime.datetime(2023, 12, 13, 11, 22, 15, 552840), end_time=datetime.datetime(2023, 12, 13, 11, 22, 16, 62542), status=, reason=None, parent_id=7, parent=TaskTreeNode(id=7, code_id=7, code=Code(id=7, function='perform', designator_id=5, designator=PickUpAction(id=5, process_metadata_id=1, dtype='PickUpAction', robot_state_id=4, robot_state=RobotState(id=4, torso_height=0.3, type=, pose_id=6, process_metadata_id=1), arm='left', grasp='front', object_id=1), process_metadata_id=1), start_time=datetime.datetime(2023, 12, 13, 11, 22, 14, 214734), end_time=datetime.datetime(2023, 12, 13, 11, 22, 17, 504156), status=, reason=None, parent_id=2, parent=TaskTreeNode(id=2, code_id=2, code=Code(id=2, function='plan', designator_id=None, designator=None, process_metadata_id=1), start_time=datetime.datetime(2023, 12, 13, 11, 22, 12, 144277), end_time=datetime.datetime(2023, 12, 13, 11, 22, 25, 498607), status=, reason=None, parent_id=1, parent=TaskTreeNode(id=1, code_id=1, code=Code(id=1, function='no_operation', designator_id=None, designator=None, process_metadata_id=1), start_time=datetime.datetime(2023, 12, 13, 11, 22, 5, 734143), end_time=None, status=, reason=None, parent_id=None, parent=None, process_metadata_id=1), process_metadata_id=1), process_metadata_id=1), process_metadata_id=1)\n", - "TaskTreeNode(id=11, code_id=11, code=Code(id=11, function='perform', designator_id=9, designator=MoveGripperMotion(id=9, process_metadata_id=1, dtype='MoveGripperMotion', motion='close', gripper='left', allow_gripper_collision=None), process_metadata_id=1), start_time=datetime.datetime(2023, 12, 13, 11, 22, 16, 62656), end_time=datetime.datetime(2023, 12, 13, 11, 22, 16, 570383), status=, reason=None, parent_id=7, parent=TaskTreeNode(id=7, code_id=7, code=Code(id=7, function='perform', designator_id=5, designator=PickUpAction(id=5, process_metadata_id=1, dtype='PickUpAction', robot_state_id=4, robot_state=RobotState(id=4, torso_height=0.3, type=, pose_id=6, process_metadata_id=1), arm='left', grasp='front', object_id=1), process_metadata_id=1), start_time=datetime.datetime(2023, 12, 13, 11, 22, 14, 214734), end_time=datetime.datetime(2023, 12, 13, 11, 22, 17, 504156), status=, reason=None, parent_id=2, parent=TaskTreeNode(id=2, code_id=2, code=Code(id=2, function='plan', designator_id=None, designator=None, process_metadata_id=1), start_time=datetime.datetime(2023, 12, 13, 11, 22, 12, 144277), end_time=datetime.datetime(2023, 12, 13, 11, 22, 25, 498607), status=, reason=None, parent_id=1, parent=TaskTreeNode(id=1, code_id=1, code=Code(id=1, function='no_operation', designator_id=None, designator=None, process_metadata_id=1), start_time=datetime.datetime(2023, 12, 13, 11, 22, 5, 734143), end_time=None, status=, reason=None, parent_id=None, parent=None, process_metadata_id=1), process_metadata_id=1), process_metadata_id=1), process_metadata_id=1)\n", - "TaskTreeNode(id=12, code_id=12, code=Code(id=12, function='perform', designator_id=10, designator=MoveTCPMotion(id=10, process_metadata_id=1, dtype='MoveTCPMotion', arm='left', allow_gripper_collision=None, pose_id=10), process_metadata_id=1), start_time=datetime.datetime(2023, 12, 13, 11, 22, 16, 703869), end_time=datetime.datetime(2023, 12, 13, 11, 22, 17, 214127), status=, reason=None, parent_id=7, parent=TaskTreeNode(id=7, code_id=7, code=Code(id=7, function='perform', designator_id=5, designator=PickUpAction(id=5, process_metadata_id=1, dtype='PickUpAction', robot_state_id=4, robot_state=RobotState(id=4, torso_height=0.3, type=, pose_id=6, process_metadata_id=1), arm='left', grasp='front', object_id=1), process_metadata_id=1), start_time=datetime.datetime(2023, 12, 13, 11, 22, 14, 214734), end_time=datetime.datetime(2023, 12, 13, 11, 22, 17, 504156), status=, reason=None, parent_id=2, parent=TaskTreeNode(id=2, code_id=2, code=Code(id=2, function='plan', designator_id=None, designator=None, process_metadata_id=1), start_time=datetime.datetime(2023, 12, 13, 11, 22, 12, 144277), end_time=datetime.datetime(2023, 12, 13, 11, 22, 25, 498607), status=, reason=None, parent_id=1, parent=TaskTreeNode(id=1, code_id=1, code=Code(id=1, function='no_operation', designator_id=None, designator=None, process_metadata_id=1), start_time=datetime.datetime(2023, 12, 13, 11, 22, 5, 734143), end_time=None, status=, reason=None, parent_id=None, parent=None, process_metadata_id=1), process_metadata_id=1), process_metadata_id=1), process_metadata_id=1)\n", - "TaskTreeNode(id=13, code_id=13, code=Code(id=13, function='perform', designator_id=11, designator=ParkArmsAction(id=11, process_metadata_id=1, dtype='ParkArmsAction', robot_state_id=5, robot_state=RobotState(id=5, torso_height=0.3, type=, pose_id=11, process_metadata_id=1), arm=), process_metadata_id=1), start_time=datetime.datetime(2023, 12, 13, 11, 22, 17, 504274), end_time=datetime.datetime(2023, 12, 13, 11, 22, 18, 13609), status=, reason=None, parent_id=2, parent=TaskTreeNode(id=2, code_id=2, code=Code(id=2, function='plan', designator_id=None, designator=None, process_metadata_id=1), start_time=datetime.datetime(2023, 12, 13, 11, 22, 12, 144277), end_time=datetime.datetime(2023, 12, 13, 11, 22, 25, 498607), status=, reason=None, parent_id=1, parent=TaskTreeNode(id=1, code_id=1, code=Code(id=1, function='no_operation', designator_id=None, designator=None, process_metadata_id=1), start_time=datetime.datetime(2023, 12, 13, 11, 22, 5, 734143), end_time=None, status=, reason=None, parent_id=None, parent=None, process_metadata_id=1), process_metadata_id=1), process_metadata_id=1)\n", - "TaskTreeNode(id=14, code_id=14, code=Code(id=14, function='perform', designator_id=12, designator=NavigateAction(id=12, process_metadata_id=1, dtype='NavigateAction', robot_state_id=6, robot_state=RobotState(id=6, torso_height=0.3, type=, pose_id=12, process_metadata_id=1), pose_id=13), process_metadata_id=1), start_time=datetime.datetime(2023, 12, 13, 11, 22, 22, 957228), end_time=datetime.datetime(2023, 12, 13, 11, 22, 23, 462603), status=, reason=None, parent_id=2, parent=TaskTreeNode(id=2, code_id=2, code=Code(id=2, function='plan', designator_id=None, designator=None, process_metadata_id=1), start_time=datetime.datetime(2023, 12, 13, 11, 22, 12, 144277), end_time=datetime.datetime(2023, 12, 13, 11, 22, 25, 498607), status=, reason=None, parent_id=1, parent=TaskTreeNode(id=1, code_id=1, code=Code(id=1, function='no_operation', designator_id=None, designator=None, process_metadata_id=1), start_time=datetime.datetime(2023, 12, 13, 11, 22, 5, 734143), end_time=None, status=, reason=None, parent_id=None, parent=None, process_metadata_id=1), process_metadata_id=1), process_metadata_id=1)\n", - "TaskTreeNode(id=15, code_id=15, code=Code(id=15, function='perform', designator_id=13, designator=MoveMotion(id=13, process_metadata_id=1, dtype='MoveMotion', pose_id=14), process_metadata_id=1), start_time=datetime.datetime(2023, 12, 13, 11, 22, 22, 957259), end_time=datetime.datetime(2023, 12, 13, 11, 22, 23, 462584), status=, reason=None, parent_id=14, parent=TaskTreeNode(id=14, code_id=14, code=Code(id=14, function='perform', designator_id=12, designator=NavigateAction(id=12, process_metadata_id=1, dtype='NavigateAction', robot_state_id=6, robot_state=RobotState(id=6, torso_height=0.3, type=, pose_id=12, process_metadata_id=1), pose_id=13), process_metadata_id=1), start_time=datetime.datetime(2023, 12, 13, 11, 22, 22, 957228), end_time=datetime.datetime(2023, 12, 13, 11, 22, 23, 462603), status=, reason=None, parent_id=2, parent=TaskTreeNode(id=2, code_id=2, code=Code(id=2, function='plan', designator_id=None, designator=None, process_metadata_id=1), start_time=datetime.datetime(2023, 12, 13, 11, 22, 12, 144277), end_time=datetime.datetime(2023, 12, 13, 11, 22, 25, 498607), status=, reason=None, parent_id=1, parent=TaskTreeNode(id=1, code_id=1, code=Code(id=1, function='no_operation', designator_id=None, designator=None, process_metadata_id=1), start_time=datetime.datetime(2023, 12, 13, 11, 22, 5, 734143), end_time=None, status=, reason=None, parent_id=None, parent=None, process_metadata_id=1), process_metadata_id=1), process_metadata_id=1), process_metadata_id=1)\n", - "TaskTreeNode(id=16, code_id=16, code=Code(id=16, function='perform', designator_id=14, designator=PlaceAction(id=14, process_metadata_id=1, dtype='PlaceAction', robot_state_id=7, robot_state=RobotState(id=7, torso_height=0.3, type=, pose_id=15, process_metadata_id=1), arm='left', pose_id=17, object_id=2), process_metadata_id=1), start_time=datetime.datetime(2023, 12, 13, 11, 22, 23, 462711), end_time=datetime.datetime(2023, 12, 13, 11, 22, 24, 992076), status=, reason=None, parent_id=2, parent=TaskTreeNode(id=2, code_id=2, code=Code(id=2, function='plan', designator_id=None, designator=None, process_metadata_id=1), start_time=datetime.datetime(2023, 12, 13, 11, 22, 12, 144277), end_time=datetime.datetime(2023, 12, 13, 11, 22, 25, 498607), status=, reason=None, parent_id=1, parent=TaskTreeNode(id=1, code_id=1, code=Code(id=1, function='no_operation', designator_id=None, designator=None, process_metadata_id=1), start_time=datetime.datetime(2023, 12, 13, 11, 22, 5, 734143), end_time=None, status=, reason=None, parent_id=None, parent=None, process_metadata_id=1), process_metadata_id=1), process_metadata_id=1)\n", - "TaskTreeNode(id=17, code_id=17, code=Code(id=17, function='perform', designator_id=15, designator=MoveTCPMotion(id=15, process_metadata_id=1, dtype='MoveTCPMotion', arm='left', allow_gripper_collision=None, pose_id=18), process_metadata_id=1), start_time=datetime.datetime(2023, 12, 13, 11, 22, 23, 463717), end_time=datetime.datetime(2023, 12, 13, 11, 22, 23, 974361), status=, reason=None, parent_id=16, parent=TaskTreeNode(id=16, code_id=16, code=Code(id=16, function='perform', designator_id=14, designator=PlaceAction(id=14, process_metadata_id=1, dtype='PlaceAction', robot_state_id=7, robot_state=RobotState(id=7, torso_height=0.3, type=, pose_id=15, process_metadata_id=1), arm='left', pose_id=17, object_id=2), process_metadata_id=1), start_time=datetime.datetime(2023, 12, 13, 11, 22, 23, 462711), end_time=datetime.datetime(2023, 12, 13, 11, 22, 24, 992076), status=, reason=None, parent_id=2, parent=TaskTreeNode(id=2, code_id=2, code=Code(id=2, function='plan', designator_id=None, designator=None, process_metadata_id=1), start_time=datetime.datetime(2023, 12, 13, 11, 22, 12, 144277), end_time=datetime.datetime(2023, 12, 13, 11, 22, 25, 498607), status=, reason=None, parent_id=1, parent=TaskTreeNode(id=1, code_id=1, code=Code(id=1, function='no_operation', designator_id=None, designator=None, process_metadata_id=1), start_time=datetime.datetime(2023, 12, 13, 11, 22, 5, 734143), end_time=None, status=, reason=None, parent_id=None, parent=None, process_metadata_id=1), process_metadata_id=1), process_metadata_id=1), process_metadata_id=1)\n", - "TaskTreeNode(id=18, code_id=18, code=Code(id=18, function='perform', designator_id=16, designator=MoveGripperMotion(id=16, process_metadata_id=1, dtype='MoveGripperMotion', motion='open', gripper='left', allow_gripper_collision=None), process_metadata_id=1), start_time=datetime.datetime(2023, 12, 13, 11, 22, 23, 974450), end_time=datetime.datetime(2023, 12, 13, 11, 22, 24, 482580), status=, reason=None, parent_id=16, parent=TaskTreeNode(id=16, code_id=16, code=Code(id=16, function='perform', designator_id=14, designator=PlaceAction(id=14, process_metadata_id=1, dtype='PlaceAction', robot_state_id=7, robot_state=RobotState(id=7, torso_height=0.3, type=, pose_id=15, process_metadata_id=1), arm='left', pose_id=17, object_id=2), process_metadata_id=1), start_time=datetime.datetime(2023, 12, 13, 11, 22, 23, 462711), end_time=datetime.datetime(2023, 12, 13, 11, 22, 24, 992076), status=, reason=None, parent_id=2, parent=TaskTreeNode(id=2, code_id=2, code=Code(id=2, function='plan', designator_id=None, designator=None, process_metadata_id=1), start_time=datetime.datetime(2023, 12, 13, 11, 22, 12, 144277), end_time=datetime.datetime(2023, 12, 13, 11, 22, 25, 498607), status=, reason=None, parent_id=1, parent=TaskTreeNode(id=1, code_id=1, code=Code(id=1, function='no_operation', designator_id=None, designator=None, process_metadata_id=1), start_time=datetime.datetime(2023, 12, 13, 11, 22, 5, 734143), end_time=None, status=, reason=None, parent_id=None, parent=None, process_metadata_id=1), process_metadata_id=1), process_metadata_id=1), process_metadata_id=1)\n", - "TaskTreeNode(id=19, code_id=19, code=Code(id=19, function='perform', designator_id=17, designator=MoveTCPMotion(id=17, process_metadata_id=1, dtype='MoveTCPMotion', arm='left', allow_gripper_collision=None, pose_id=19), process_metadata_id=1), start_time=datetime.datetime(2023, 12, 13, 11, 22, 24, 482694), end_time=datetime.datetime(2023, 12, 13, 11, 22, 24, 992063), status=, reason=None, parent_id=16, parent=TaskTreeNode(id=16, code_id=16, code=Code(id=16, function='perform', designator_id=14, designator=PlaceAction(id=14, process_metadata_id=1, dtype='PlaceAction', robot_state_id=7, robot_state=RobotState(id=7, torso_height=0.3, type=, pose_id=15, process_metadata_id=1), arm='left', pose_id=17, object_id=2), process_metadata_id=1), start_time=datetime.datetime(2023, 12, 13, 11, 22, 23, 462711), end_time=datetime.datetime(2023, 12, 13, 11, 22, 24, 992076), status=, reason=None, parent_id=2, parent=TaskTreeNode(id=2, code_id=2, code=Code(id=2, function='plan', designator_id=None, designator=None, process_metadata_id=1), start_time=datetime.datetime(2023, 12, 13, 11, 22, 12, 144277), end_time=datetime.datetime(2023, 12, 13, 11, 22, 25, 498607), status=, reason=None, parent_id=1, parent=TaskTreeNode(id=1, code_id=1, code=Code(id=1, function='no_operation', designator_id=None, designator=None, process_metadata_id=1), start_time=datetime.datetime(2023, 12, 13, 11, 22, 5, 734143), end_time=None, status=, reason=None, parent_id=None, parent=None, process_metadata_id=1), process_metadata_id=1), process_metadata_id=1), process_metadata_id=1)\n", - "TaskTreeNode(id=20, code_id=20, code=Code(id=20, function='perform', designator_id=18, designator=ParkArmsAction(id=18, process_metadata_id=1, dtype='ParkArmsAction', robot_state_id=8, robot_state=RobotState(id=8, torso_height=0.3, type=, pose_id=20, process_metadata_id=1), arm=), process_metadata_id=1), start_time=datetime.datetime(2023, 12, 13, 11, 22, 24, 992156), end_time=datetime.datetime(2023, 12, 13, 11, 22, 25, 498594), status=, reason=None, parent_id=2, parent=TaskTreeNode(id=2, code_id=2, code=Code(id=2, function='plan', designator_id=None, designator=None, process_metadata_id=1), start_time=datetime.datetime(2023, 12, 13, 11, 22, 12, 144277), end_time=datetime.datetime(2023, 12, 13, 11, 22, 25, 498607), status=, reason=None, parent_id=1, parent=TaskTreeNode(id=1, code_id=1, code=Code(id=1, function='no_operation', designator_id=None, designator=None, process_metadata_id=1), start_time=datetime.datetime(2023, 12, 13, 11, 22, 5, 734143), end_time=None, status=, reason=None, parent_id=None, parent=None, process_metadata_id=1), process_metadata_id=1), process_metadata_id=1)\n" + "TaskTreeNode(id=2, code_id=2, code=Code(id=2, function='plan', designator_id=None, designator=None, process_metadata_id=1), start_time=datetime.datetime(2024, 1, 29, 17, 51, 15, 872198), end_time=datetime.datetime(2024, 1, 29, 17, 51, 35, 265539), status=, reason=None, parent_id=1, parent=TaskTreeNode(id=1, code_id=1, code=Code(id=1, function='no_operation', designator_id=None, designator=None, process_metadata_id=1), start_time=datetime.datetime(2024, 1, 29, 17, 51, 9, 545708), end_time=None, status=, reason=None, parent_id=None, parent=None, process_metadata_id=1), process_metadata_id=1)\n", + "TaskTreeNode(id=3, code_id=3, code=Code(id=3, function='perform', designator_id=1, designator=ParkArmsAction(id=1, process_metadata_id=1, dtype='ParkArmsAction', robot_state_id=1, robot_state=RobotState(id=1, torso_height=0.0, type=, pose_id=1, process_metadata_id=1), arm=), process_metadata_id=1), start_time=datetime.datetime(2024, 1, 29, 17, 51, 15, 872243), end_time=datetime.datetime(2024, 1, 29, 17, 51, 16, 378193), status=, reason=None, parent_id=2, parent=TaskTreeNode(id=2, code_id=2, code=Code(id=2, function='plan', designator_id=None, designator=None, process_metadata_id=1), start_time=datetime.datetime(2024, 1, 29, 17, 51, 15, 872198), end_time=datetime.datetime(2024, 1, 29, 17, 51, 35, 265539), status=, reason=None, parent_id=1, parent=TaskTreeNode(id=1, code_id=1, code=Code(id=1, function='no_operation', designator_id=None, designator=None, process_metadata_id=1), start_time=datetime.datetime(2024, 1, 29, 17, 51, 9, 545708), end_time=None, status=, reason=None, parent_id=None, parent=None, process_metadata_id=1), process_metadata_id=1), process_metadata_id=1)\n", + "TaskTreeNode(id=4, code_id=4, code=Code(id=4, function='perform', designator_id=2, designator=MoveTorsoAction(id=2, process_metadata_id=1, dtype='MoveTorsoAction', robot_state_id=2, robot_state=RobotState(id=2, torso_height=0.0, type=, pose_id=2, process_metadata_id=1), position=0.3), process_metadata_id=1), start_time=datetime.datetime(2024, 1, 29, 17, 51, 16, 378288), end_time=datetime.datetime(2024, 1, 29, 17, 51, 16, 881639), status=, reason=None, parent_id=2, parent=TaskTreeNode(id=2, code_id=2, code=Code(id=2, function='plan', designator_id=None, designator=None, process_metadata_id=1), start_time=datetime.datetime(2024, 1, 29, 17, 51, 15, 872198), end_time=datetime.datetime(2024, 1, 29, 17, 51, 35, 265539), status=, reason=None, parent_id=1, parent=TaskTreeNode(id=1, code_id=1, code=Code(id=1, function='no_operation', designator_id=None, designator=None, process_metadata_id=1), start_time=datetime.datetime(2024, 1, 29, 17, 51, 9, 545708), end_time=None, status=, reason=None, parent_id=None, parent=None, process_metadata_id=1), process_metadata_id=1), process_metadata_id=1)\n", + "TaskTreeNode(id=5, code_id=5, code=Code(id=5, function='perform', designator_id=3, designator=NavigateAction(id=3, process_metadata_id=1, dtype='NavigateAction', robot_state_id=3, robot_state=RobotState(id=3, torso_height=0.3, type=, pose_id=3, process_metadata_id=1), pose_id=4), process_metadata_id=1), start_time=datetime.datetime(2024, 1, 29, 17, 51, 17, 459617), end_time=datetime.datetime(2024, 1, 29, 17, 51, 17, 970219), status=, reason=None, parent_id=2, parent=TaskTreeNode(id=2, code_id=2, code=Code(id=2, function='plan', designator_id=None, designator=None, process_metadata_id=1), start_time=datetime.datetime(2024, 1, 29, 17, 51, 15, 872198), end_time=datetime.datetime(2024, 1, 29, 17, 51, 35, 265539), status=, reason=None, parent_id=1, parent=TaskTreeNode(id=1, code_id=1, code=Code(id=1, function='no_operation', designator_id=None, designator=None, process_metadata_id=1), start_time=datetime.datetime(2024, 1, 29, 17, 51, 9, 545708), end_time=None, status=, reason=None, parent_id=None, parent=None, process_metadata_id=1), process_metadata_id=1), process_metadata_id=1)\n", + "TaskTreeNode(id=6, code_id=6, code=Code(id=6, function='perform', designator_id=4, designator=MoveMotion(id=4, process_metadata_id=1, dtype='MoveMotion', pose_id=5), process_metadata_id=1), start_time=datetime.datetime(2024, 1, 29, 17, 51, 17, 459689), end_time=datetime.datetime(2024, 1, 29, 17, 51, 17, 970208), status=, reason=None, parent_id=5, parent=TaskTreeNode(id=5, code_id=5, code=Code(id=5, function='perform', designator_id=3, designator=NavigateAction(id=3, process_metadata_id=1, dtype='NavigateAction', robot_state_id=3, robot_state=RobotState(id=3, torso_height=0.3, type=, pose_id=3, process_metadata_id=1), pose_id=4), process_metadata_id=1), start_time=datetime.datetime(2024, 1, 29, 17, 51, 17, 459617), end_time=datetime.datetime(2024, 1, 29, 17, 51, 17, 970219), status=, reason=None, parent_id=2, parent=TaskTreeNode(id=2, code_id=2, code=Code(id=2, function='plan', designator_id=None, designator=None, process_metadata_id=1), start_time=datetime.datetime(2024, 1, 29, 17, 51, 15, 872198), end_time=datetime.datetime(2024, 1, 29, 17, 51, 35, 265539), status=, reason=None, parent_id=1, parent=TaskTreeNode(id=1, code_id=1, code=Code(id=1, function='no_operation', designator_id=None, designator=None, process_metadata_id=1), start_time=datetime.datetime(2024, 1, 29, 17, 51, 9, 545708), end_time=None, status=, reason=None, parent_id=None, parent=None, process_metadata_id=1), process_metadata_id=1), process_metadata_id=1), process_metadata_id=1)\n", + "TaskTreeNode(id=7, code_id=7, code=Code(id=7, function='perform', designator_id=5, designator=PickUpAction(id=5, process_metadata_id=1, dtype='PickUpAction', robot_state_id=4, robot_state=RobotState(id=4, torso_height=0.3, type=, pose_id=6, process_metadata_id=1), arm='left', grasp='front', object_id=1), process_metadata_id=1), start_time=datetime.datetime(2024, 1, 29, 17, 51, 17, 970355), end_time=datetime.datetime(2024, 1, 29, 17, 51, 21, 274534), status=, reason=None, parent_id=2, parent=TaskTreeNode(id=2, code_id=2, code=Code(id=2, function='plan', designator_id=None, designator=None, process_metadata_id=1), start_time=datetime.datetime(2024, 1, 29, 17, 51, 15, 872198), end_time=datetime.datetime(2024, 1, 29, 17, 51, 35, 265539), status=, reason=None, parent_id=1, parent=TaskTreeNode(id=1, code_id=1, code=Code(id=1, function='no_operation', designator_id=None, designator=None, process_metadata_id=1), start_time=datetime.datetime(2024, 1, 29, 17, 51, 9, 545708), end_time=None, status=, reason=None, parent_id=None, parent=None, process_metadata_id=1), process_metadata_id=1), process_metadata_id=1)\n", + "TaskTreeNode(id=8, code_id=8, code=Code(id=8, function='perform', designator_id=6, designator=MoveTCPMotion(id=6, process_metadata_id=1, dtype='MoveTCPMotion', arm='left', allow_gripper_collision=None, pose_id=8), process_metadata_id=1), start_time=datetime.datetime(2024, 1, 29, 17, 51, 18, 122271), end_time=datetime.datetime(2024, 1, 29, 17, 51, 18, 631460), status=, reason=None, parent_id=7, parent=TaskTreeNode(id=7, code_id=7, code=Code(id=7, function='perform', designator_id=5, designator=PickUpAction(id=5, process_metadata_id=1, dtype='PickUpAction', robot_state_id=4, robot_state=RobotState(id=4, torso_height=0.3, type=, pose_id=6, process_metadata_id=1), arm='left', grasp='front', object_id=1), process_metadata_id=1), start_time=datetime.datetime(2024, 1, 29, 17, 51, 17, 970355), end_time=datetime.datetime(2024, 1, 29, 17, 51, 21, 274534), status=, reason=None, parent_id=2, parent=TaskTreeNode(id=2, code_id=2, code=Code(id=2, function='plan', designator_id=None, designator=None, process_metadata_id=1), start_time=datetime.datetime(2024, 1, 29, 17, 51, 15, 872198), end_time=datetime.datetime(2024, 1, 29, 17, 51, 35, 265539), status=, reason=None, parent_id=1, parent=TaskTreeNode(id=1, code_id=1, code=Code(id=1, function='no_operation', designator_id=None, designator=None, process_metadata_id=1), start_time=datetime.datetime(2024, 1, 29, 17, 51, 9, 545708), end_time=None, status=, reason=None, parent_id=None, parent=None, process_metadata_id=1), process_metadata_id=1), process_metadata_id=1), process_metadata_id=1)\n", + "TaskTreeNode(id=9, code_id=9, code=Code(id=9, function='perform', designator_id=7, designator=MoveGripperMotion(id=7, process_metadata_id=1, dtype='MoveGripperMotion', motion='open', gripper='left', allow_gripper_collision=None), process_metadata_id=1), start_time=datetime.datetime(2024, 1, 29, 17, 51, 18, 631582), end_time=datetime.datetime(2024, 1, 29, 17, 51, 19, 141918), status=, reason=None, parent_id=7, parent=TaskTreeNode(id=7, code_id=7, code=Code(id=7, function='perform', designator_id=5, designator=PickUpAction(id=5, process_metadata_id=1, dtype='PickUpAction', robot_state_id=4, robot_state=RobotState(id=4, torso_height=0.3, type=, pose_id=6, process_metadata_id=1), arm='left', grasp='front', object_id=1), process_metadata_id=1), start_time=datetime.datetime(2024, 1, 29, 17, 51, 17, 970355), end_time=datetime.datetime(2024, 1, 29, 17, 51, 21, 274534), status=, reason=None, parent_id=2, parent=TaskTreeNode(id=2, code_id=2, code=Code(id=2, function='plan', designator_id=None, designator=None, process_metadata_id=1), start_time=datetime.datetime(2024, 1, 29, 17, 51, 15, 872198), end_time=datetime.datetime(2024, 1, 29, 17, 51, 35, 265539), status=, reason=None, parent_id=1, parent=TaskTreeNode(id=1, code_id=1, code=Code(id=1, function='no_operation', designator_id=None, designator=None, process_metadata_id=1), start_time=datetime.datetime(2024, 1, 29, 17, 51, 9, 545708), end_time=None, status=, reason=None, parent_id=None, parent=None, process_metadata_id=1), process_metadata_id=1), process_metadata_id=1), process_metadata_id=1)\n", + "TaskTreeNode(id=10, code_id=10, code=Code(id=10, function='perform', designator_id=8, designator=MoveTCPMotion(id=8, process_metadata_id=1, dtype='MoveTCPMotion', arm='left', allow_gripper_collision=None, pose_id=9), process_metadata_id=1), start_time=datetime.datetime(2024, 1, 29, 17, 51, 19, 273490), end_time=datetime.datetime(2024, 1, 29, 17, 51, 19, 783950), status=, reason=None, parent_id=7, parent=TaskTreeNode(id=7, code_id=7, code=Code(id=7, function='perform', designator_id=5, designator=PickUpAction(id=5, process_metadata_id=1, dtype='PickUpAction', robot_state_id=4, robot_state=RobotState(id=4, torso_height=0.3, type=, pose_id=6, process_metadata_id=1), arm='left', grasp='front', object_id=1), process_metadata_id=1), start_time=datetime.datetime(2024, 1, 29, 17, 51, 17, 970355), end_time=datetime.datetime(2024, 1, 29, 17, 51, 21, 274534), status=, reason=None, parent_id=2, parent=TaskTreeNode(id=2, code_id=2, code=Code(id=2, function='plan', designator_id=None, designator=None, process_metadata_id=1), start_time=datetime.datetime(2024, 1, 29, 17, 51, 15, 872198), end_time=datetime.datetime(2024, 1, 29, 17, 51, 35, 265539), status=, reason=None, parent_id=1, parent=TaskTreeNode(id=1, code_id=1, code=Code(id=1, function='no_operation', designator_id=None, designator=None, process_metadata_id=1), start_time=datetime.datetime(2024, 1, 29, 17, 51, 9, 545708), end_time=None, status=, reason=None, parent_id=None, parent=None, process_metadata_id=1), process_metadata_id=1), process_metadata_id=1), process_metadata_id=1)\n", + "TaskTreeNode(id=11, code_id=11, code=Code(id=11, function='perform', designator_id=9, designator=MoveGripperMotion(id=9, process_metadata_id=1, dtype='MoveGripperMotion', motion='close', gripper='left', allow_gripper_collision=None), process_metadata_id=1), start_time=datetime.datetime(2024, 1, 29, 17, 51, 19, 784120), end_time=datetime.datetime(2024, 1, 29, 17, 51, 20, 298210), status=, reason=None, parent_id=7, parent=TaskTreeNode(id=7, code_id=7, code=Code(id=7, function='perform', designator_id=5, designator=PickUpAction(id=5, process_metadata_id=1, dtype='PickUpAction', robot_state_id=4, robot_state=RobotState(id=4, torso_height=0.3, type=, pose_id=6, process_metadata_id=1), arm='left', grasp='front', object_id=1), process_metadata_id=1), start_time=datetime.datetime(2024, 1, 29, 17, 51, 17, 970355), end_time=datetime.datetime(2024, 1, 29, 17, 51, 21, 274534), status=, reason=None, parent_id=2, parent=TaskTreeNode(id=2, code_id=2, code=Code(id=2, function='plan', designator_id=None, designator=None, process_metadata_id=1), start_time=datetime.datetime(2024, 1, 29, 17, 51, 15, 872198), end_time=datetime.datetime(2024, 1, 29, 17, 51, 35, 265539), status=, reason=None, parent_id=1, parent=TaskTreeNode(id=1, code_id=1, code=Code(id=1, function='no_operation', designator_id=None, designator=None, process_metadata_id=1), start_time=datetime.datetime(2024, 1, 29, 17, 51, 9, 545708), end_time=None, status=, reason=None, parent_id=None, parent=None, process_metadata_id=1), process_metadata_id=1), process_metadata_id=1), process_metadata_id=1)\n", + "TaskTreeNode(id=12, code_id=12, code=Code(id=12, function='perform', designator_id=10, designator=MoveTCPMotion(id=10, process_metadata_id=1, dtype='MoveTCPMotion', arm='left', allow_gripper_collision=None, pose_id=10), process_metadata_id=1), start_time=datetime.datetime(2024, 1, 29, 17, 51, 20, 457629), end_time=datetime.datetime(2024, 1, 29, 17, 51, 20, 974496), status=, reason=None, parent_id=7, parent=TaskTreeNode(id=7, code_id=7, code=Code(id=7, function='perform', designator_id=5, designator=PickUpAction(id=5, process_metadata_id=1, dtype='PickUpAction', robot_state_id=4, robot_state=RobotState(id=4, torso_height=0.3, type=, pose_id=6, process_metadata_id=1), arm='left', grasp='front', object_id=1), process_metadata_id=1), start_time=datetime.datetime(2024, 1, 29, 17, 51, 17, 970355), end_time=datetime.datetime(2024, 1, 29, 17, 51, 21, 274534), status=, reason=None, parent_id=2, parent=TaskTreeNode(id=2, code_id=2, code=Code(id=2, function='plan', designator_id=None, designator=None, process_metadata_id=1), start_time=datetime.datetime(2024, 1, 29, 17, 51, 15, 872198), end_time=datetime.datetime(2024, 1, 29, 17, 51, 35, 265539), status=, reason=None, parent_id=1, parent=TaskTreeNode(id=1, code_id=1, code=Code(id=1, function='no_operation', designator_id=None, designator=None, process_metadata_id=1), start_time=datetime.datetime(2024, 1, 29, 17, 51, 9, 545708), end_time=None, status=, reason=None, parent_id=None, parent=None, process_metadata_id=1), process_metadata_id=1), process_metadata_id=1), process_metadata_id=1)\n", + "TaskTreeNode(id=13, code_id=13, code=Code(id=13, function='perform', designator_id=11, designator=ParkArmsAction(id=11, process_metadata_id=1, dtype='ParkArmsAction', robot_state_id=5, robot_state=RobotState(id=5, torso_height=0.3, type=, pose_id=11, process_metadata_id=1), arm=), process_metadata_id=1), start_time=datetime.datetime(2024, 1, 29, 17, 51, 21, 274678), end_time=datetime.datetime(2024, 1, 29, 17, 51, 21, 782383), status=, reason=None, parent_id=2, parent=TaskTreeNode(id=2, code_id=2, code=Code(id=2, function='plan', designator_id=None, designator=None, process_metadata_id=1), start_time=datetime.datetime(2024, 1, 29, 17, 51, 15, 872198), end_time=datetime.datetime(2024, 1, 29, 17, 51, 35, 265539), status=, reason=None, parent_id=1, parent=TaskTreeNode(id=1, code_id=1, code=Code(id=1, function='no_operation', designator_id=None, designator=None, process_metadata_id=1), start_time=datetime.datetime(2024, 1, 29, 17, 51, 9, 545708), end_time=None, status=, reason=None, parent_id=None, parent=None, process_metadata_id=1), process_metadata_id=1), process_metadata_id=1)\n", + "TaskTreeNode(id=14, code_id=14, code=Code(id=14, function='perform', designator_id=12, designator=NavigateAction(id=12, process_metadata_id=1, dtype='NavigateAction', robot_state_id=6, robot_state=RobotState(id=6, torso_height=0.3, type=, pose_id=12, process_metadata_id=1), pose_id=13), process_metadata_id=1), start_time=datetime.datetime(2024, 1, 29, 17, 51, 32, 702999), end_time=datetime.datetime(2024, 1, 29, 17, 51, 33, 209586), status=, reason=None, parent_id=2, parent=TaskTreeNode(id=2, code_id=2, code=Code(id=2, function='plan', designator_id=None, designator=None, process_metadata_id=1), start_time=datetime.datetime(2024, 1, 29, 17, 51, 15, 872198), end_time=datetime.datetime(2024, 1, 29, 17, 51, 35, 265539), status=, reason=None, parent_id=1, parent=TaskTreeNode(id=1, code_id=1, code=Code(id=1, function='no_operation', designator_id=None, designator=None, process_metadata_id=1), start_time=datetime.datetime(2024, 1, 29, 17, 51, 9, 545708), end_time=None, status=, reason=None, parent_id=None, parent=None, process_metadata_id=1), process_metadata_id=1), process_metadata_id=1)\n", + "TaskTreeNode(id=15, code_id=15, code=Code(id=15, function='perform', designator_id=13, designator=MoveMotion(id=13, process_metadata_id=1, dtype='MoveMotion', pose_id=14), process_metadata_id=1), start_time=datetime.datetime(2024, 1, 29, 17, 51, 32, 703060), end_time=datetime.datetime(2024, 1, 29, 17, 51, 33, 209577), status=, reason=None, parent_id=14, parent=TaskTreeNode(id=14, code_id=14, code=Code(id=14, function='perform', designator_id=12, designator=NavigateAction(id=12, process_metadata_id=1, dtype='NavigateAction', robot_state_id=6, robot_state=RobotState(id=6, torso_height=0.3, type=, pose_id=12, process_metadata_id=1), pose_id=13), process_metadata_id=1), start_time=datetime.datetime(2024, 1, 29, 17, 51, 32, 702999), end_time=datetime.datetime(2024, 1, 29, 17, 51, 33, 209586), status=, reason=None, parent_id=2, parent=TaskTreeNode(id=2, code_id=2, code=Code(id=2, function='plan', designator_id=None, designator=None, process_metadata_id=1), start_time=datetime.datetime(2024, 1, 29, 17, 51, 15, 872198), end_time=datetime.datetime(2024, 1, 29, 17, 51, 35, 265539), status=, reason=None, parent_id=1, parent=TaskTreeNode(id=1, code_id=1, code=Code(id=1, function='no_operation', designator_id=None, designator=None, process_metadata_id=1), start_time=datetime.datetime(2024, 1, 29, 17, 51, 9, 545708), end_time=None, status=, reason=None, parent_id=None, parent=None, process_metadata_id=1), process_metadata_id=1), process_metadata_id=1), process_metadata_id=1)\n", + "TaskTreeNode(id=16, code_id=16, code=Code(id=16, function='perform', designator_id=14, designator=PlaceAction(id=14, process_metadata_id=1, dtype='PlaceAction', robot_state_id=7, robot_state=RobotState(id=7, torso_height=0.3, type=, pose_id=15, process_metadata_id=1), arm='left', pose_id=17, object_id=2), process_metadata_id=1), start_time=datetime.datetime(2024, 1, 29, 17, 51, 33, 209685), end_time=datetime.datetime(2024, 1, 29, 17, 51, 34, 751975), status=, reason=None, parent_id=2, parent=TaskTreeNode(id=2, code_id=2, code=Code(id=2, function='plan', designator_id=None, designator=None, process_metadata_id=1), start_time=datetime.datetime(2024, 1, 29, 17, 51, 15, 872198), end_time=datetime.datetime(2024, 1, 29, 17, 51, 35, 265539), status=, reason=None, parent_id=1, parent=TaskTreeNode(id=1, code_id=1, code=Code(id=1, function='no_operation', designator_id=None, designator=None, process_metadata_id=1), start_time=datetime.datetime(2024, 1, 29, 17, 51, 9, 545708), end_time=None, status=, reason=None, parent_id=None, parent=None, process_metadata_id=1), process_metadata_id=1), process_metadata_id=1)\n", + "TaskTreeNode(id=17, code_id=17, code=Code(id=17, function='perform', designator_id=15, designator=MoveTCPMotion(id=15, process_metadata_id=1, dtype='MoveTCPMotion', arm='left', allow_gripper_collision=None, pose_id=18), process_metadata_id=1), start_time=datetime.datetime(2024, 1, 29, 17, 51, 33, 210786), end_time=datetime.datetime(2024, 1, 29, 17, 51, 33, 721856), status=, reason=None, parent_id=16, parent=TaskTreeNode(id=16, code_id=16, code=Code(id=16, function='perform', designator_id=14, designator=PlaceAction(id=14, process_metadata_id=1, dtype='PlaceAction', robot_state_id=7, robot_state=RobotState(id=7, torso_height=0.3, type=, pose_id=15, process_metadata_id=1), arm='left', pose_id=17, object_id=2), process_metadata_id=1), start_time=datetime.datetime(2024, 1, 29, 17, 51, 33, 209685), end_time=datetime.datetime(2024, 1, 29, 17, 51, 34, 751975), status=, reason=None, parent_id=2, parent=TaskTreeNode(id=2, code_id=2, code=Code(id=2, function='plan', designator_id=None, designator=None, process_metadata_id=1), start_time=datetime.datetime(2024, 1, 29, 17, 51, 15, 872198), end_time=datetime.datetime(2024, 1, 29, 17, 51, 35, 265539), status=, reason=None, parent_id=1, parent=TaskTreeNode(id=1, code_id=1, code=Code(id=1, function='no_operation', designator_id=None, designator=None, process_metadata_id=1), start_time=datetime.datetime(2024, 1, 29, 17, 51, 9, 545708), end_time=None, status=, reason=None, parent_id=None, parent=None, process_metadata_id=1), process_metadata_id=1), process_metadata_id=1), process_metadata_id=1)\n", + "TaskTreeNode(id=18, code_id=18, code=Code(id=18, function='perform', designator_id=16, designator=MoveGripperMotion(id=16, process_metadata_id=1, dtype='MoveGripperMotion', motion='open', gripper='left', allow_gripper_collision=None), process_metadata_id=1), start_time=datetime.datetime(2024, 1, 29, 17, 51, 33, 722026), end_time=datetime.datetime(2024, 1, 29, 17, 51, 34, 239587), status=, reason=None, parent_id=16, parent=TaskTreeNode(id=16, code_id=16, code=Code(id=16, function='perform', designator_id=14, designator=PlaceAction(id=14, process_metadata_id=1, dtype='PlaceAction', robot_state_id=7, robot_state=RobotState(id=7, torso_height=0.3, type=, pose_id=15, process_metadata_id=1), arm='left', pose_id=17, object_id=2), process_metadata_id=1), start_time=datetime.datetime(2024, 1, 29, 17, 51, 33, 209685), end_time=datetime.datetime(2024, 1, 29, 17, 51, 34, 751975), status=, reason=None, parent_id=2, parent=TaskTreeNode(id=2, code_id=2, code=Code(id=2, function='plan', designator_id=None, designator=None, process_metadata_id=1), start_time=datetime.datetime(2024, 1, 29, 17, 51, 15, 872198), end_time=datetime.datetime(2024, 1, 29, 17, 51, 35, 265539), status=, reason=None, parent_id=1, parent=TaskTreeNode(id=1, code_id=1, code=Code(id=1, function='no_operation', designator_id=None, designator=None, process_metadata_id=1), start_time=datetime.datetime(2024, 1, 29, 17, 51, 9, 545708), end_time=None, status=, reason=None, parent_id=None, parent=None, process_metadata_id=1), process_metadata_id=1), process_metadata_id=1), process_metadata_id=1)\n", + "TaskTreeNode(id=19, code_id=19, code=Code(id=19, function='perform', designator_id=17, designator=MoveTCPMotion(id=17, process_metadata_id=1, dtype='MoveTCPMotion', arm='left', allow_gripper_collision=None, pose_id=19), process_metadata_id=1), start_time=datetime.datetime(2024, 1, 29, 17, 51, 34, 241042), end_time=datetime.datetime(2024, 1, 29, 17, 51, 34, 751946), status=, reason=None, parent_id=16, parent=TaskTreeNode(id=16, code_id=16, code=Code(id=16, function='perform', designator_id=14, designator=PlaceAction(id=14, process_metadata_id=1, dtype='PlaceAction', robot_state_id=7, robot_state=RobotState(id=7, torso_height=0.3, type=, pose_id=15, process_metadata_id=1), arm='left', pose_id=17, object_id=2), process_metadata_id=1), start_time=datetime.datetime(2024, 1, 29, 17, 51, 33, 209685), end_time=datetime.datetime(2024, 1, 29, 17, 51, 34, 751975), status=, reason=None, parent_id=2, parent=TaskTreeNode(id=2, code_id=2, code=Code(id=2, function='plan', designator_id=None, designator=None, process_metadata_id=1), start_time=datetime.datetime(2024, 1, 29, 17, 51, 15, 872198), end_time=datetime.datetime(2024, 1, 29, 17, 51, 35, 265539), status=, reason=None, parent_id=1, parent=TaskTreeNode(id=1, code_id=1, code=Code(id=1, function='no_operation', designator_id=None, designator=None, process_metadata_id=1), start_time=datetime.datetime(2024, 1, 29, 17, 51, 9, 545708), end_time=None, status=, reason=None, parent_id=None, parent=None, process_metadata_id=1), process_metadata_id=1), process_metadata_id=1), process_metadata_id=1)\n", + "TaskTreeNode(id=20, code_id=20, code=Code(id=20, function='perform', designator_id=18, designator=ParkArmsAction(id=18, process_metadata_id=1, dtype='ParkArmsAction', robot_state_id=8, robot_state=RobotState(id=8, torso_height=0.3, type=, pose_id=20, process_metadata_id=1), arm=), process_metadata_id=1), start_time=datetime.datetime(2024, 1, 29, 17, 51, 34, 752094), end_time=datetime.datetime(2024, 1, 29, 17, 51, 35, 265524), status=, reason=None, parent_id=2, parent=TaskTreeNode(id=2, code_id=2, code=Code(id=2, function='plan', designator_id=None, designator=None, process_metadata_id=1), start_time=datetime.datetime(2024, 1, 29, 17, 51, 15, 872198), end_time=datetime.datetime(2024, 1, 29, 17, 51, 35, 265539), status=, reason=None, parent_id=1, parent=TaskTreeNode(id=1, code_id=1, code=Code(id=1, function='no_operation', designator_id=None, designator=None, process_metadata_id=1), start_time=datetime.datetime(2024, 1, 29, 17, 51, 9, 545708), end_time=None, status=, reason=None, parent_id=None, parent=None, process_metadata_id=1), process_metadata_id=1), process_metadata_id=1)\n" ] } ], "source": [ - "successful_tasks = session.query(pycram.orm.task.TaskTreeNode).filter(pycram.orm.task.TaskTreeNode.status == \"SUCCEEDED\")\n", + "successful_tasks = session.scalars(select(pycram.orm.task.TaskTreeNode).where(pycram.orm.task.TaskTreeNode.status == \"SUCCEEDED\"))\n", "print(*successful_tasks, sep=\"\\n\")" ] }, @@ -434,14 +484,15 @@ "execution_count": 10, "metadata": { "ExecuteTime": { - "end_time": "2023-12-13T10:22:25.827781799Z", - "start_time": "2023-12-13T10:22:25.782671460Z" + "end_time": "2024-01-29T16:51:35.601121928Z", + "start_time": "2024-01-29T16:51:35.600085428Z" } }, "outputs": [], "source": [ - "from sqlalchemy.orm import Mapped, mapped_column\n", + "from sqlalchemy.orm import Mapped, mapped_column, Session\n", "from pycram.orm.action_designator import Action\n", + "from dataclasses import dataclass\n", "\n", "\n", "# define ORM class from pattern in every pycram.orm class\n", @@ -452,32 +503,24 @@ " text: Mapped[str] \n", "\n", "# define brand new action designator\n", - "class Saying(ActionDesignatorDescription):\n", + "\n", + "@dataclass \n", + "class SayingActionPerformable(ActionDesignatorDescription.Action):\n", " \n", - " @dataclasses.dataclass \n", - " class Action(ActionDesignatorDescription.Action):\n", + " text: str\n", " \n", - " text: str\n", - " \n", - " @with_tree\n", - " def perform(self) -> Any:\n", - " print(self.text)\n", - " \n", - " def to_sql(self) -> ORMSaying:\n", - " return ORMSaying(self.text)\n", + " @with_tree\n", + " def perform(self) -> None:\n", + " print(self.text)\n", "\n", - " def insert(self, session: Session, *args, **kwargs) -> ORMSaying:\n", - " action = super().insert(session)\n", - " session.add(action)\n", - " session.commit()\n", - " return action\n", - " \n", - " def __init__(self, texts: List[str], resolver=None):\n", - " super().__init__(resolver)\n", - " self.texts = texts\n", + " def to_sql(self) -> ORMSaying:\n", + " return ORMSaying(self.text)\n", "\n", - " def ground(self) -> Action:\n", - " return self.Action(self.texts[0])" + " def insert(self, session: Session, *args, **kwargs) -> ORMSaying:\n", + " action = super().insert(session)\n", + " session.add(action)\n", + " session.commit()\n", + " return action\n" ] }, { @@ -492,8 +535,8 @@ "execution_count": 11, "metadata": { "ExecuteTime": { - "end_time": "2023-12-13T10:22:25.828275817Z", - "start_time": "2023-12-13T10:22:25.826744665Z" + "end_time": "2024-01-29T16:51:35.601417935Z", + "start_time": "2024-01-29T16:51:35.600240790Z" } }, "outputs": [], @@ -513,8 +556,8 @@ "execution_count": 12, "metadata": { "ExecuteTime": { - "end_time": "2023-12-13T10:22:26.207983261Z", - "start_time": "2023-12-13T10:22:25.826841295Z" + "end_time": "2024-01-29T16:51:36.020873055Z", + "start_time": "2024-01-29T16:51:35.600296911Z" } }, "outputs": [ @@ -529,13 +572,13 @@ "name": "stderr", "output_type": "stream", "text": [ - "Inserting TaskTree into database: 100%|██████████| 21/21 [00:00<00:00, 122.69it/s]\n" + "Inserting TaskTree into database: 100%|██████████| 21/21 [00:00<00:00, 116.25it/s]\n" ] } ], "source": [ "# create a saying action and insert it\n", - "Saying.Action(\"Patchie, Patchie; Where is my Patchie?\").perform()\n", + "SayingActionPerformable(\"Patchie, Patchie; Where is my Patchie?\").perform()\n", "pycram.task.task_tree.root.insert(session)\n", "session.commit()\n", "\n", @@ -552,11 +595,11 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 14, "metadata": { "ExecuteTime": { - "end_time": "2023-12-13T10:22:26.214535062Z", - "start_time": "2023-12-13T10:22:26.209490452Z" + "end_time": "2024-01-29T16:52:32.021378099Z", + "start_time": "2024-01-29T16:52:31.976674160Z" } }, "outputs": [ @@ -564,13 +607,13 @@ "data": { "text/plain": "[ORMSaying(id=37, process_metadata_id=1, dtype='ORMSaying', robot_state_id=17, robot_state=RobotState(id=17, torso_height=0.3, type=, pose_id=41, process_metadata_id=1), text='Patchie, Patchie; Where is my Patchie?')]" }, - "execution_count": 13, + "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "session.query(ORMSaying).all()" + "session.scalars(select(ORMSaying)).all()" ] } ], diff --git a/examples/orm_querying_examples.ipynb b/examples/orm_querying_examples.ipynb index 28f52f63d..12adedfe1 100644 --- a/examples/orm_querying_examples.ipynb +++ b/examples/orm_querying_examples.ipynb @@ -36,12 +36,13 @@ "Unknown attribute \"type\" in /robot[@name='pr2']/link[@name='wide_stereo_optical_frame']\n", "Unknown attribute \"type\" in /robot[@name='pr2']/link[@name='narrow_stereo_optical_frame']\n", "Unknown attribute \"type\" in /robot[@name='pr2']/link[@name='laser_tilt_link']\n", - "[WARN] [1702467193.499071]: Could not import RoboKudo messages, RoboKudo interface could not be initialized\n", - "[WARN] [1702467193.504366]: Failed to import Giskard messages\n" + "[WARN] [1706547279.009069]: Failed to import Giskard messages\n", + "[WARN] [1706547279.013875]: Could not import RoboKudo messages, RoboKudo interface could not be initialized\n" ] } ], "source": [ + "from pycram.designators.actions.actions import MoveTorsoActionPerformable, ParkArmsActionPerformable\n", "from tf import transformations\n", "import itertools\n", "import time\n", @@ -167,13 +168,13 @@ " # try to execute a grasping plan\n", " with simulated_robot:\n", "\n", - " ParkArmsAction.Action(pycram.enums.Arms.BOTH).perform()\n", + " ParkArmsActionPerformable(pycram.enums.Arms.BOTH).perform()\n", " # navigate to sampled position\n", " NavigateAction([Pose(position, orientation)]).resolve().perform()\n", "\n", " # move torso\n", " height = np.random.uniform(0., 0.33, 1)[0]\n", - " MoveTorsoAction.Action(height).perform()\n", + " MoveTorsoActionPerformable(height).perform()\n", "\n", " # try to pick it up\n", " try:\n", @@ -205,8 +206,8 @@ "metadata": { "collapsed": false, "ExecuteTime": { - "end_time": "2023-12-13T11:33:13.874158209Z", - "start_time": "2023-12-13T11:33:12.871008643Z" + "end_time": "2024-01-29T16:54:39.452156158Z", + "start_time": "2024-01-29T16:54:38.500054294Z" } }, "id": "dc0c9e6f15f126a3" @@ -242,7 +243,23 @@ "Unknown attribute \"type\" in /robot[@name='pr2']/link[@name='wide_stereo_optical_frame']\n", "Unknown attribute \"type\" in /robot[@name='pr2']/link[@name='narrow_stereo_optical_frame']\n", "Unknown attribute \"type\" in /robot[@name='pr2']/link[@name='laser_tilt_link']\n", - "100%|██████████| 960/960 [01:41<00:00, 9.87it/s, success_rate=0.0854]" + " 7%|▋ | 69/960 [00:10<01:47, 8.33it/s, success_rate=0.058] Warning: TF_REPEATED_DATA ignoring data with redundant timestamp for frame floor_0 (parent map) at time 1706547289.526924 according to authority default_authority\n", + " at line 278 in /tmp/binarydeb/ros-noetic-tf2-0.7.7/src/buffer_core.cpp\n", + " 28%|██▊ | 269/960 [00:38<01:37, 7.08it/s, success_rate=0.0929]Warning: TF_REPEATED_DATA ignoring data with redundant timestamp for frame pr2_1/narrow_stereo_l_stereo_camera_frame (parent map) at time 1706547317.808086 according to authority default_authority\n", + " at line 278 in /tmp/binarydeb/ros-noetic-tf2-0.7.7/src/buffer_core.cpp\n", + " 33%|███▎ | 314/960 [00:44<01:35, 6.79it/s, success_rate=0.0955]Warning: TF_REPEATED_DATA ignoring data with redundant timestamp for frame floor_0 (parent map) at time 1706547323.909252 according to authority default_authority\n", + " at line 278 in /tmp/binarydeb/ros-noetic-tf2-0.7.7/src/buffer_core.cpp\n", + " 52%|█████▏ | 502/960 [01:10<01:07, 6.76it/s, success_rate=0.0837]Warning: TF_REPEATED_DATA ignoring data with redundant timestamp for frame pr2_1/narrow_stereo_l_stereo_camera_frame (parent map) at time 1706547349.562933 according to authority default_authority\n", + " at line 278 in /tmp/binarydeb/ros-noetic-tf2-0.7.7/src/buffer_core.cpp\n", + " 57%|█████▋ | 543/960 [01:16<01:02, 6.65it/s, success_rate=0.081] Warning: TF_REPEATED_DATA ignoring data with redundant timestamp for frame pr2_1/narrow_stereo_l_stereo_camera_optical_frame (parent map) at time 1706547355.536726 according to authority default_authority\n", + " at line 278 in /tmp/binarydeb/ros-noetic-tf2-0.7.7/src/buffer_core.cpp\n", + " 78%|███████▊ | 749/960 [01:44<00:28, 7.28it/s, success_rate=0.0814]Warning: TF_REPEATED_DATA ignoring data with redundant timestamp for frame pr2_1/torso_lift_motor_screw_link (parent map) at time 1706547384.042323 according to authority default_authority\n", + " at line 278 in /tmp/binarydeb/ros-noetic-tf2-0.7.7/src/buffer_core.cpp\n", + " 81%|████████▏ | 782/960 [01:48<00:22, 7.94it/s, success_rate=0.0831]Warning: TF_REPEATED_DATA ignoring data with redundant timestamp for frame pr2_1/l_torso_lift_side_plate_link (parent map) at time 1706547388.456061 according to authority default_authority\n", + " at line 278 in /tmp/binarydeb/ros-noetic-tf2-0.7.7/src/buffer_core.cpp\n", + " 86%|████████▌ | 826/960 [01:55<00:18, 7.12it/s, success_rate=0.0835]Warning: TF_REPEATED_DATA ignoring data with redundant timestamp for frame pr2_1/r_shoulder_lift_link (parent map) at time 1706547394.924536 according to authority default_authority\n", + " at line 278 in /tmp/binarydeb/ros-noetic-tf2-0.7.7/src/buffer_core.cpp\n", + "100%|██████████| 960/960 [02:13<00:00, 7.74it/s, success_rate=0.0854]" ] } ], @@ -258,8 +275,8 @@ "metadata": { "collapsed": false, "ExecuteTime": { - "end_time": "2023-12-13T11:34:55.371037890Z", - "start_time": "2023-12-13T11:33:13.874635425Z" + "end_time": "2024-01-29T16:56:53.360247565Z", + "start_time": "2024-01-29T16:54:39.452769369Z" } }, "id": "f2dcacd942218899" @@ -293,9 +310,9 @@ "name": "stdout", "output_type": "stream", "text": [ - "SELECT \"PickUpAction\".arm AS \"PickUpAction_arm\", \"PickUpAction\".grasp AS \"PickUpAction_grasp\", \"RobotState\".torso_height AS \"RobotState_torso_height\", \"Position\".x AS \"Position_x\", \"Position\".y AS \"Position_y\" \n", + "SELECT \"PickUpAction\".arm, \"PickUpAction\".grasp, \"RobotState\".torso_height, \"Position\".x, \"Position\".y \n", "FROM \"TaskTreeNode\" JOIN \"Code\" ON \"Code\".id = \"TaskTreeNode\".code_id JOIN (\"Designator\" JOIN \"Action\" ON \"Designator\".id = \"Action\".id JOIN \"PickUpAction\" ON \"Action\".id = \"PickUpAction\".id) ON \"Designator\".id = \"Code\".designator_id JOIN \"RobotState\" ON \"RobotState\".id = \"Action\".robot_state_id JOIN \"Pose\" ON \"Pose\".id = \"RobotState\".pose_id JOIN \"Position\" ON \"Position\".id = \"Pose\".position_id JOIN \"Object\" ON \"Object\".id = \"PickUpAction\".object_id \n", - "WHERE \"Object\".type = ? AND \"TaskTreeNode\".status = ?\n", + "WHERE \"Object\".type = :type_1 AND \"TaskTreeNode\".status = :status_1\n", " arm grasp torso_height x y\n", "0 left left 0.198541 -0.679778 0.049746\n", "1 left left 0.092868 0.473199 0.612112\n", @@ -321,30 +338,31 @@ } ], "source": [ + "from sqlalchemy import select\n", "from pycram.enums import ObjectType\n", "\n", "milk = BulletWorldObject(\"Milk\", ObjectType.MILK, \"milk.stl\")\n", "\n", "# query all relative robot positions in regard to an objects position\n", "# make sure to order the joins() correctly\n", - "query = (session.query(ORMPickUpAction.arm, ORMPickUpAction.grasp, RobotState.torso_height, Position.x, Position.y)\n", + "query = (select(ORMPickUpAction.arm, ORMPickUpAction.grasp, RobotState.torso_height, Position.x, Position.y)\n", " .join(TaskTreeNode.code)\n", " .join(Code.designator.of_type(ORMPickUpAction))\n", " .join(ORMPickUpAction.robot_state)\n", " .join(RobotState.pose)\n", " .join(pycram.orm.base.Pose.position)\n", - " .join(ORMPickUpAction.object).filter(Object.type == milk.type)\n", - " .filter(TaskTreeNode.status == \"SUCCEEDED\"))\n", + " .join(ORMPickUpAction.object).where(Object.type == milk.type)\n", + " .where(TaskTreeNode.status == \"SUCCEEDED\"))\n", "print(query)\n", "\n", - "df = pd.read_sql_query(query.statement, session.get_bind())\n", + "df = pd.read_sql_query(query, session.get_bind())\n", "print(df)" ], "metadata": { "collapsed": false, "ExecuteTime": { - "end_time": "2023-12-13T11:34:55.371818556Z", - "start_time": "2023-12-13T11:34:55.371020667Z" + "end_time": "2024-01-29T16:56:53.362279642Z", + "start_time": "2024-01-29T16:56:53.360090447Z" } }, "id": "b17c6366f317dd7" @@ -381,7 +399,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "SELECT \"TaskTreeNode\".status AS \"TaskTreeNode_status\", \"Object\".type AS \"Object_type\", \"Position_1\".z - \"RobotState\".torso_height AS \"relative torso height\", \"Position_2\".x - \"Position_1\".x AS x, \"Position_2\".y - \"Position_1\".y AS y \n", + "SELECT \"TaskTreeNode\".status, \"Object\".type, \"Position_1\".z - \"RobotState\".torso_height AS \"relative torso height\", \"Position_2\".x - \"Position_1\".x AS x, \"Position_2\".y - \"Position_1\".y AS y \n", "FROM \"TaskTreeNode\" JOIN \"Code\" ON \"Code\".id = \"TaskTreeNode\".code_id JOIN (\"Designator\" JOIN \"Action\" ON \"Designator\".id = \"Action\".id JOIN \"PickUpAction\" ON \"Action\".id = \"PickUpAction\".id) ON \"Designator\".id = \"Code\".designator_id JOIN \"RobotState\" ON \"RobotState\".id = \"Action\".robot_state_id JOIN \"Pose\" AS \"Pose_1\" ON \"Pose_1\".id = \"RobotState\".pose_id JOIN \"Position\" AS \"Position_2\" ON \"Position_2\".id = \"Pose_1\".position_id JOIN \"Object\" ON \"Object\".id = \"PickUpAction\".object_id JOIN \"Pose\" AS \"Pose_2\" ON \"Pose_2\".id = \"Object\".pose_id JOIN \"Position\" AS \"Position_1\" ON \"Position_1\".id = \"Pose_2\".position_id\n", " status type relative torso height x \\\n", "0 FAILED ObjectType.BREAKFAST_CEREAL 0.480005 -0.737416 \n", @@ -421,7 +439,7 @@ "robot_position = sqlalchemy.orm.aliased(Position)\n", "object_position = sqlalchemy.orm.aliased(Position)\n", "\n", - "query = (session.query(TaskTreeNode.status, Object.type, \n", + "query = (select(TaskTreeNode.status, Object.type, \n", " sqlalchemy.label(\"relative torso height\", object_position.z - RobotState.torso_height),\n", " sqlalchemy.label(\"x\", robot_position.x - object_position.x),\n", " sqlalchemy.label(\"y\", robot_position.y - object_position.y))\n", @@ -435,15 +453,15 @@ " .join(object_position, object_pose.position))\n", "print(query)\n", "\n", - "df = pd.read_sql(query.statement, session.get_bind())\n", + "df = pd.read_sql(query, session.get_bind())\n", "df[\"status\"] = df[\"status\"].apply(lambda x: str(x.name))\n", "print(df)" ], "metadata": { "collapsed": false, "ExecuteTime": { - "end_time": "2023-12-13T11:34:55.423112328Z", - "start_time": "2023-12-13T11:34:55.371312120Z" + "end_time": "2024-01-29T16:56:53.408414208Z", + "start_time": "2024-01-29T16:56:53.408012819Z" } }, "id": "a89d1a0f2a933475" diff --git a/examples/pose.ipynb b/examples/pose.ipynb index f3f94093f..91443c79b 100644 --- a/examples/pose.ipynb +++ b/examples/pose.ipynb @@ -18,8 +18,8 @@ "source": [ "Before we start a few words about naming convention of Poses in PyCRAM. Naming convention is similar to the PoseStamped message so if you are familiar with that this should be easy. \n", "\n", - "* **Position:** A position means the position in cartisian space, so the x, y, and z coordinates. \n", - "* **Orientation:** An orientation is the rotation in all thre axes represented as a quaternion with x, y, z, w.\n", + "* **Position:** A position means the position in cartesian space, so the x, y, and z coordinates. \n", + "* **Orientation:** An orientation is the rotation in all three axes represented as a quaternion with x, y, z, w.\n", "* **Pose:** A pose is the combination of a position and an orientation. Poses in PyCRAM also contain a frame of reference to which the position and orientation are relative." ] }, @@ -192,8 +192,7 @@ "Set the position via method:\n", "x: 3\n", "y: 2\n", - "z: 1 \n", - "\n" + "z: 1 \n" ] } ], @@ -340,7 +339,7 @@ "metadata": {}, "source": [ "# Transforms\n", - "Transforms are similar to Poses but instead of representing a Pose in a frame of reference they represent a transformation from one frame of reference to another. For this purpose Transforms have an additioinal parameter called ```child_frame_id``` which is the frame of reference to which the Transform is pointing. \n", + "Transforms are similar to Poses but instead of representing a Pose in a frame of reference they represent a transformation from one frame of reference to another. For this purpose Transforms have an additional parameter called ```child_frame_id``` which is the frame of reference to which the Transform is pointing. \n", "\n", "Transforms in PyCRAM inherit from the TransformStamped message of ROS which makes them, like Poses, compatible to ROS services and topics that expect a TransformStamped message. Therefore, the naming conventions of Transforms are the same as of TransformStamped which. \n", "\n", @@ -392,7 +391,7 @@ "id": "acfe3d8c", "metadata": {}, "source": [ - "Transforms have the same methods to get and set values as Poses have, theresfore only a short showcase will be given. For more details please look at the Pose example or the API documentation." + "Transforms have the same methods to get and set values as Poses have, therefore only a short showcase will be given. For more details please look at the Pose example or the API documentation." ] }, { @@ -524,7 +523,7 @@ "* InverseTimes\n", "\n", "### Multiplication\n", - "We will first take a look at the multiplication of Transforms. We will use an example were we have two Transforms, the first from ```map``` to a ```hand``` frame and the second from the ```hand``` to a ```milk``` frame. By multiplicating these two we get the Transform from ```map``` to ```milk``` frame." + "We will first take a look at the multiplication of Transforms. We will use an example were we have two Transforms, the first from ```map``` to a ```hand``` frame and the second from the ```hand``` to a ```milk``` frame. By multiplying these two we get the Transform from ```map``` to ```milk``` frame." ] }, { @@ -624,7 +623,7 @@ "metadata": {}, "source": [ "### Inverse Times\n", - "Inverse times combines the inverting and multiplication of Transforms, this results in a 'minus' for Transforms. We will again use the examle of a hand holding a milk, but this time we have the Transforms from ```map``` to ```milk``` and ```hand``` to ```milk```. " + "Inverse times combines the inverting and multiplication of Transforms, this results in a 'minus' for Transforms. We will again use the example of a hand holding a milk, but this time we have the Transforms from ```map``` to ```milk``` and ```hand``` to ```milk```. " ] }, { diff --git a/launch/ik_and_description.launch b/launch/ik_and_description.launch index b4fc410ac..0ae6d3098 100644 --- a/launch/ik_and_description.launch +++ b/launch/ik_and_description.launch @@ -38,6 +38,13 @@ textfile="$(find pycram)/resources/hsrb.urdf"/> + + + + + + diff --git a/launch/pr2_standalone.launch b/launch/pr2_standalone.launch new file mode 100644 index 000000000..b2a605ad4 --- /dev/null +++ b/launch/pr2_standalone.launch @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/package.xml b/package.xml index af7fee250..f3b332d63 100644 --- a/package.xml +++ b/package.xml @@ -1,33 +1,25 @@ pycram - 0.0.0 + 0.0.1 The pycram package - Andy Augsten - Dustin Augsten + Jonas Dech - TODO + GPLv3 - - - - - - - - + https://pycram.readthedocs.io/en/latest/ @@ -44,13 +36,23 @@ + catkin + rospy + std_msgs + rospy + std_msgs + rospy + std_msgs + geometry_msgs + geometry_msgs + diff --git a/requirements-resolver.txt b/requirements-resolver.txt new file mode 100644 index 000000000..4eb2a63a3 --- /dev/null +++ b/requirements-resolver.txt @@ -0,0 +1,3 @@ +-r requirements.txt +probabilistic_model>=4.0.8 +random_events>=2.0.9 diff --git a/requirements.txt b/requirements.txt index a86e66dac..5ff4c4861 100644 --- a/requirements.txt +++ b/requirements.txt @@ -12,6 +12,7 @@ urdf-parser-py~=0.0.3 graphviz anytree>=2.8.0 SQLAlchemy>=2.0.9 -tqdm==4.66.1 +tqdm==4.66.3 psutil==5.9.7 lxml==4.9.1 +typing_extensions==4.9.0 diff --git a/resources/stretch.urdf b/resources/stretch.urdf new file mode 100644 index 000000000..78df2173b --- /dev/null +++ b/resources/stretch.urdf @@ -0,0 +1,993 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/ur5e_without_gripper.urdf b/resources/ur5e_without_gripper.urdf new file mode 100644 index 000000000..7ecbb9659 --- /dev/null +++ b/resources/ur5e_without_gripper.urdf @@ -0,0 +1,191 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/pycram/__init__.py b/src/pycram/__init__.py index a081b74a1..878e37441 100644 --- a/src/pycram/__init__.py +++ b/src/pycram/__init__.py @@ -23,7 +23,7 @@ import logging import logging.config -# with utils.suppress_stdout_stderr(): +# with datastructures.suppress_stdout_stderr(): # import pycram.process_modules import pycram.process_modules diff --git a/src/pycram/bullet_world.py b/src/pycram/bullet_world.py deleted file mode 100644 index 114d21cd7..000000000 --- a/src/pycram/bullet_world.py +++ /dev/null @@ -1,1687 +0,0 @@ -# used for delayed evaluation of typing until python 3.11 becomes mainstream -from __future__ import annotations - -import logging -import os -import pathlib -import re -import threading -import time -import xml.etree.ElementTree -from queue import Queue -import tf -from typing import List, Optional, Dict, Tuple, Callable -from typing import Union - -import numpy as np -import pybullet as p -import rospkg -import rospy -import rosgraph -import rosnode -import atexit - -import urdf_parser_py.urdf -from geometry_msgs.msg import Quaternion, Point, TransformStamped -from urdf_parser_py.urdf import URDF - -from . import utils -from .event import Event -from .robot_descriptions import robot_description -from .enums import JointType, ObjectType -from .local_transformer import LocalTransformer -from sensor_msgs.msg import JointState - -from .pose import Pose, Transform - - -class BulletWorld: - """ - The BulletWorld Class represents the physics Simulation and belief state. - """ - - current_bullet_world: BulletWorld = None - """ - Global reference to the currently used BulletWorld, usually this is the - graphical one. However, if you are inside a Use_shadow_world() environment the current_bullet_world points to the - shadow world. In this way you can comfortably use the current_bullet_world, which should point towards the BulletWorld - used at the moment. - """ - robot: Object = None - """ - Global reference to the spawned Object that represents the robot. The robot is identified by checking the name in the - URDF with the name of the URDF on the parameter server. - """ - - # Check is for sphinx autoAPI to be able to work in a CI workflow - if rosgraph.is_master_online(): # and "/pycram" not in rosnode.get_node_names(): - rospy.init_node('pycram') - - def __init__(self, type: str = "GUI", is_shadow_world: bool = False): - """ - Creates a new simulation, the type decides of the simulation should be a rendered window or just run in the - background. There can only be one rendered simulation. - The BulletWorld object also initializes the Events for attachment, detachment and for manipulating the world. - - :param type: Can either be "GUI" for rendered window or "DIRECT" for non-rendered. The default parameter is "GUI" - :param is_shadow_world: For internal usage, decides if this BulletWorld should be used as a shadow world. - """ - self.objects: List[Object] = [] - self.client_id: int = -1 - self.detachment_event: Event = Event() - self.attachment_event: Event = Event() - self.manipulation_event: Event = Event() - self.type: str = type - self._gui_thread: Gui = Gui(self, type) - self._gui_thread.start() - # This disables file caching from PyBullet, since this would also cache - # files that can not be loaded - p.setPhysicsEngineParameter(enableFileCaching=0) - # Needed to let the other thread start the simulation, before Objects are spawned. - time.sleep(0.1) - if BulletWorld.current_bullet_world == None: - BulletWorld.current_bullet_world = self - self.vis_axis: Object = [] - self.coll_callbacks: Dict[Tuple[Object, Object], Tuple[Callable, Callable]] = {} - self.data_directory: List[str] = [os.path.dirname(__file__) + "/../../resources"] - self.shadow_world: BulletWorld = BulletWorld("DIRECT", True) if not is_shadow_world else None - self.world_sync: WorldSync = WorldSync(self, self.shadow_world) if not is_shadow_world else None - self.is_shadow_world: bool = is_shadow_world - self.local_transformer = LocalTransformer() - if not is_shadow_world: - self.world_sync.start() - self.local_transformer.bullet_world = self - self.local_transformer.shadow_world = self.shadow_world - - # Some default settings - self.set_gravity([0, 0, -9.8]) - if not is_shadow_world: - plane = Object("floor", ObjectType.ENVIRONMENT, "plane.urdf", world=self) - # atexit.register(self.exit) - - def get_objects_by_name(self, name: str) -> List[Object]: - """ - Returns a list of all Objects in this BulletWorld with the same name as the given one. - - :param name: The name of the returned Objects. - :return: A list of all Objects with the name 'name'. - """ - return list(filter(lambda obj: obj.name == name, self.objects)) - - def get_objects_by_type(self, obj_type: str) -> List[Object]: - """ - Returns a list of all Objects which have the type 'obj_type'. - - :param obj_type: The type of the returned Objects. - :return: A list of all Objects that have the type 'obj_type'. - """ - return list(filter(lambda obj: obj.type == obj_type, self.objects)) - - def get_object_by_id(self, id: int) -> Object: - """ - Returns the single Object that has the unique id. - - :param id: The unique id for which the Object should be returned. - :return: The Object with the id 'id'. - """ - return list(filter(lambda obj: obj.id == id, self.objects))[0] - - def get_attachment_event(self) -> Event: - """ - Returns the event reference that is fired if an attachment occurs. - - :return: The reference to the attachment event - """ - return self.attachment_event - - def get_detachment_event(self) -> Event: - """ - Returns the event reference that is fired if a detachment occurs. - - :return: The event reference for the detachment event. - """ - return self.detachment_event - - def get_manipulation_event(self) -> Event: - """ - Returns the event reference that is fired if any manipulation occurs. - - :return: The event reference for the manipulation event. - """ - return self.manipulation_event - - def set_realtime(self, real_time: bool) -> None: - """ - Enables the real time simulation of Physic in the BulletWorld. By default this is disabled and Physic is only - simulated to reason about it. - - :param real_time: Whether the BulletWorld should simulate Physic in real time. - """ - p.setRealTimeSimulation(1 if real_time else 0, self.client_id) - - def set_gravity(self, velocity: List[float]) -> None: - """ - Sets the gravity that is used in the BullteWorld, by default the is the gravity on earth ([0, 0, -9.8]). Gravity - is given as a vector in x,y,z. Gravity is only applied while simulating Physic. - - :param velocity: The gravity vector that should be used in the BulletWorld. - """ - p.setGravity(velocity[0], velocity[1], velocity[2], physicsClientId=self.client_id) - - def set_robot(self, robot: Object) -> None: - """ - Sets the global variable for the robot Object. This should be set on spawning the robot. - - :param robot: The Object reference to the Object representing the robot. - """ - BulletWorld.robot = robot - - def simulate(self, seconds: float, real_time: Optional[float] = False) -> None: - """ - Simulates Physic in the BulletWorld for a given amount of seconds. Usually this simulation is faster than real - time, meaning you can simulate for example 10 seconds of Physic in the BulletWorld in 1 second real time. By - setting the 'real_time' parameter this simulation is slowed down such that the simulated time is equal to real - time. - - :param seconds: The amount of seconds that should be simulated. - :param real_time: If the simulation should happen in real time or faster. - """ - for i in range(0, int(seconds * 240)): - p.stepSimulation(self.client_id) - for objects, callback in self.coll_callbacks.items(): - contact_points = p.getContactPoints(objects[0].id, objects[1].id, physicsClientId=self.client_id) - # contact_points = p.getClosestPoints(objects[0].id, objects[1].id, 0.02) - # print(contact_points[0][5]) - if contact_points != (): - callback[0]() - elif callback[1] != None: # Call no collision callback - callback[1]() - if real_time: - # Simulation runs at 240 Hz - time.sleep(0.004167) - - def exit(self) -> None: - """ - Closes the BulletWorld as well as the shadow world, also collects any other thread that is running. This is the - preferred method to close the BulletWorld. - """ - # True if this is NOT the shadow world since it has a reference to the - # Shadow world - time.sleep(0.1) - if self.shadow_world: - self.world_sync.terminate = True - self.world_sync.join() - self.shadow_world.exit() - p.disconnect(self.client_id) - if self._gui_thread: - self._gui_thread.join() - if BulletWorld.current_bullet_world == self: - BulletWorld.current_bullet_world = None - BulletWorld.robot = None - - def save_state(self) -> int: - """ - Returns the id of the saved state of the BulletWorld. The saved state contains the position, orientation and joint - position of every Object in the BulletWorld. - - :return: A unique id of the state - """ - objects2attached = {} - # ToDo find out what this is for and where it is used - for o in self.objects: - objects2attached[o] = (o.attachments.copy(), o.cids.copy()) - return p.saveState(self.client_id), objects2attached - - def restore_state(self, state, objects2attached: Dict = {}) -> None: - """ - Restores the state of the BulletWorld according to the given state id. This includes position, orientation and - joint states. However, restore can not respawn objects if there are objects that were deleted between creation of - the state and restoring they will be skiped. - - :param state: The unique id representing the state, as returned by :func:`~save_state` - :param objects2attached: A dictionary of attachments, as saved in :py:attr:`~bullet_world.Object.attachments` - """ - p.restoreState(state, physicsClientId=self.client_id) - for obj in self.objects: - try: - obj.attachments, obj.cids = objects2attached[obj] - except KeyError: - continue - - def copy(self) -> BulletWorld: - """ - Copies this Bullet World into another and returns it. The other BulletWorld - will be in Direct mode. The shadow world should always be preferred instead of creating a new BulletWorld. - This method should only be used if necessary since there can be unforeseen problems. - - :return: The reference to the new BulletWorld - """ - world = BulletWorld("DIRECT") - for obj in self.objects: - o = Object(obj.name, obj.type, obj.path, obj.get_position(), obj.get_orientation(), - world, obj.color) - for joint in obj.joints: - o.set_joint_state(joint, obj.get_joint_state(joint)) - return world - - def add_vis_axis(self, pose: Pose, - length: Optional[float] = 0.2) -> None: - """ - Creates a Visual object which represents the coordinate frame at the given - position and orientation. There can be an unlimited amount of vis axis objects. - - :param pose: The pose at which the axis should be spawned - :param length: Optional parameter to configure the length of the axes - """ - - pose_in_map = self.local_transformer.transform_pose(pose, "map") - - position, orientation = pose_in_map.to_list() - - vis_x = p.createVisualShape(p.GEOM_BOX, halfExtents=[length, 0.01, 0.01], - rgbaColor=[1, 0, 0, 0.8], visualFramePosition=[length, 0.01, 0.01]) - vis_y = p.createVisualShape(p.GEOM_BOX, halfExtents=[0.01, length, 0.01], - rgbaColor=[0, 1, 0, 0.8], visualFramePosition=[0.01, length, 0.01]) - vis_z = p.createVisualShape(p.GEOM_BOX, halfExtents=[0.01, 0.01, length], - rgbaColor=[0, 0, 1, 0.8], visualFramePosition=[0.01, 0.01, length]) - - obj = p.createMultiBody(baseVisualShapeIndex=-1, linkVisualShapeIndices=[vis_x, vis_y, vis_z], - basePosition=position, baseOrientation=orientation, - linkPositions=[[0, 0, 0], [0, 0, 0], [0, 0, 0]], - linkMasses=[1.0, 1.0, 1.0], linkOrientations=[[0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1]], - linkInertialFramePositions=[[0, 0, 0], [0, 0, 0], [0, 0, 0]], - linkInertialFrameOrientations=[[0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1]], - linkParentIndices=[0, 0, 0], - linkJointTypes=[p.JOINT_FIXED, p.JOINT_FIXED, p.JOINT_FIXED], - linkJointAxis=[[1, 0, 0], [0, 1, 0], [0, 0, 1]], - linkCollisionShapeIndices=[-1, -1, -1]) - - self.vis_axis.append(obj) - - def remove_vis_axis(self) -> None: - """ - Removes all spawned vis axis objects that are currently in this BulletWorld. - """ - for id in self.vis_axis: - p.removeBody(id) - self.vis_axis = [] - - def register_collision_callback(self, objectA: Object, objectB: Object, - callback_collision: Callable, - callback_no_collision: Optional[Callable] = None) -> None: - """ - Registers callback methods for contact between two Objects. There can be a callback for when the two Objects - get in contact and, optionally, for when they are not in contact anymore. - - :param objectA: An object in the BulletWorld - :param objectB: Another object in the BulletWorld - :param callback_collision: A function that should be called if the objects are in contact - :param callback_no_collision: A function that should be called if the objects are not in contact - """ - self.coll_callbacks[(objectA, objectB)] = (callback_collision, callback_no_collision) - - def add_additional_resource_path(self, path: str) -> None: - """ - Adds a resource path in which the BulletWorld will search for files. This resource directory is searched if an - Object is spawned only with a filename. - - :param path: A path in the filesystem in which to search for files. - """ - self.data_directory.append(path) - - def get_shadow_object(self, object: Object) -> Object: - """ - Returns the corresponding object from the shadow world for the given object. If the given Object is already in - the shadow world it is returned. - - :param object: The object for which the shadow worlds object should be returned. - :return: The corresponding object in the shadow world. - """ - try: - return self.world_sync.object_mapping[object] - except KeyError: - shadow_world = self if self.is_shadow_world else self.shadow_world - if object in shadow_world.objects: - return object - else: - raise ValueError( - f"There is no shadow object for the given object: {object}, this could be the case if the object isn't anymore in the main (graphical) BulletWorld or if the given object is already a shadow object. ") - - def get_bullet_object_for_shadow(self, object: Object) -> Object: - """ - Returns the corresponding object from the main Bullet World for a given - object in the shadow world. If the given object is not in the shadow - world an error will be raised. - - :param object: The object for which the corresponding object in the main Bullet World should be found - :return: The object in the main Bullet World - """ - map = self.world_sync.object_mapping - try: - return list(map.keys())[list(map.values()).index(object)] - except ValueError: - raise ValueError("The given object is not in the shadow world.") - - def reset_bullet_world(self) -> None: - """ - Resets the BulletWorld to the state it was first spawned in. - All attached objects will be detached, all joints will be set to the - default position of 0 and all objects will be set to the position and - orientation in which they were spawned. - """ - for obj in self.objects: - if obj.attachments: - attached_objects = list(obj.attachments.keys()) - for att_obj in attached_objects: - obj.detach(att_obj) - joint_names = list(obj.joints.keys()) - joint_poses = [0 for j in joint_names] - obj.set_joint_states(dict(zip(joint_names, joint_poses))) - obj.set_pose(obj.original_pose) - - -class Use_shadow_world(): - """ - An environment for using the shadow world, while in this environment the :py:attr:`~BulletWorld.current_bullet_world` - variable will point to the shadow world. - - Example: - with Use_shadow_world(): - NavigateAction.Action([[1, 0, 0], [0, 0, 0, 1]]).perform() - """ - - def __init__(self): - self.prev_world: BulletWorld = None - - def __enter__(self): - if not BulletWorld.current_bullet_world.is_shadow_world: - time.sleep(20 / 240) - # blocks until the adding queue is ready - BulletWorld.current_bullet_world.world_sync.add_obj_queue.join() - # **This is currently not used since the sleep(20/240) seems to be enough, but on weaker hardware this might - # not be a feasible solution** - # while not BulletWorld.current_bullet_world.world_sync.equal_states: - # time.sleep(0.1) - - self.prev_world = BulletWorld.current_bullet_world - BulletWorld.current_bullet_world.world_sync.pause_sync = True - BulletWorld.current_bullet_world = BulletWorld.current_bullet_world.shadow_world - - def __exit__(self, *args): - if not self.prev_world == None: - BulletWorld.current_bullet_world = self.prev_world - BulletWorld.current_bullet_world.world_sync.pause_sync = False - - -class WorldSync(threading.Thread): - """ - Synchronizes the state between the BulletWorld and its shadow world. - Meaning the cartesian and joint position of everything in the shadow world will be - synchronized with the main BulletWorld. - Adding and removing objects is done via queues, such that loading times of objects - in the shadow world does not affect the BulletWorld. - The class provides the possibility to pause the synchronization, this can be used - if reasoning should be done in the shadow world. - """ - - def __init__(self, world: BulletWorld, shadow_world: BulletWorld): - threading.Thread.__init__(self) - self.world: BulletWorld = world - self.shadow_world: BulletWorld = shadow_world - self.shadow_world.world_sync: WorldSync = self - - self.terminate: bool = False - self.add_obj_queue: Queue = Queue() - self.remove_obj_queue: Queue = Queue() - self.pause_sync: bool = False - # Maps bullet to shadow world objects - self.object_mapping: Dict[Object, Object] = {} - self.equal_states = False - - def run(self): - """ - Main method of the synchronization, this thread runs in a loop until the - terminate flag is set. - While this loop runs it continuously checks the cartesian and joint position of - every object in the BulletWorld and updates the corresponding object in the - shadow world. When there are entries in the adding or removing queue the corresponding objects will be added - or removed in the same iteration. - """ - while not self.terminate: - self.check_for_pause() - # self.equal_states = False - for i in range(self.add_obj_queue.qsize()): - obj = self.add_obj_queue.get() - # [name, type, path, position, orientation, self.world.shadow_world, color, bulletworld object] - o = Object(obj[0], obj[1], obj[2], Pose(obj[3], obj[4]), obj[5], obj[6]) - # Maps the BulletWorld object to the shadow world object - self.object_mapping[obj[7]] = o - self.add_obj_queue.task_done() - for i in range(self.remove_obj_queue.qsize()): - obj = self.remove_obj_queue.get() - # Get shadow world object reference from object mapping - shadow_obj = self.object_mapping[obj] - shadow_obj.remove() - del self.object_mapping[obj] - self.remove_obj_queue.task_done() - - for bulletworld_obj, shadow_obj in self.object_mapping.items(): - b_pose = bulletworld_obj.get_pose() - s_pose = shadow_obj.get_pose() - if b_pose.dist(s_pose) != 0.0: - shadow_obj.set_pose(bulletworld_obj.get_pose()) - - # Manage joint positions - if len(bulletworld_obj.joints) > 2: - for joint_name in bulletworld_obj.joints.keys(): - if shadow_obj.get_joint_state(joint_name) != bulletworld_obj.get_joint_state(joint_name): - shadow_obj.set_joint_states(bulletworld_obj.get_complete_joint_state()) - break - - self.check_for_pause() - # self.check_for_equal() - time.sleep(1 / 240) - - self.add_obj_queue.join() - self.remove_obj_queue.join() - - def check_for_pause(self) -> None: - """ - Checks if :py:attr:`~self.pause_sync` is true and sleeps this thread until it isn't anymore. - """ - while self.pause_sync: - time.sleep(0.1) - - def check_for_equal(self) -> None: - """ - Checks if both BulletWorlds have the same state, meaning all objects are in the same position. - This is currently not used, but might be used in the future if synchronization issues worsen. - """ - eql = True - for obj, shadow_obj in self.object_mapping.items(): - eql = eql and obj.get_pose() == shadow_obj.get_pose() - self.equal_states = eql - - -class Gui(threading.Thread): - """ - For internal use only. Creates a new thread for the physics simulation that is active until closed by :func:`~BulletWorld.exit` - Also contains the code for controlling the camera. - """ - - def __init__(self, world, type): - threading.Thread.__init__(self) - self.world: BulletWorld = world - self.type: str = type - - def run(self): - """ - Initializes the new simulation and checks in an endless loop - if it is still active. If it is the thread will be suspended for 1/80 seconds, if it is not the method and - thus the thread terminates. The loop also checks for mouse and keyboard inputs to control the camera. - """ - if self.type != "GUI": - self.world.client_id = p.connect(p.DIRECT) - else: - self.world.client_id = p.connect(p.GUI) - - # Disable the side windows of the GUI - p.configureDebugVisualizer(p.COV_ENABLE_GUI, 0) - # Change the init camera pose - p.resetDebugVisualizerCamera(cameraDistance=1.5, cameraYaw=270.0, cameraPitch=-50, - cameraTargetPosition=[-2, 0, 1]) - - # Get the initial camera target location - cameraTargetPosition = p.getDebugVisualizerCamera()[11] - - sphereVisualId = p.createVisualShape(p.GEOM_SPHERE, radius=0.05, rgbaColor=[1, 0, 0, 1]) - - # Create a sphere with a radius of 0.05 and a mass of 0 - sphereUid = p.createMultiBody(baseMass=0.0, - baseInertialFramePosition=[0, 0, 0], - baseVisualShapeIndex=sphereVisualId, - basePosition=cameraTargetPosition) - - # Define the maxSpeed, used in calculations - maxSpeed = 16 - - # Set initial Camera Rotation - cameraYaw = 50 - cameraPitch = -35 - - # Keep track of the mouse state - mouseState = [0, 0, 0] - oldMouseX, oldMouseY = 0, 0 - - # Determines if the sphere at cameraTargetPosition is visible - visible = 1 - - # Loop to update the camera position based on keyboard events - while p.isConnected(self.world.client_id): - # Monitor user input - keys = p.getKeyboardEvents() - mouse = p.getMouseEvents() - - # Get infos about the camera - width, height, dist = p.getDebugVisualizerCamera()[0], p.getDebugVisualizerCamera()[1], \ - p.getDebugVisualizerCamera()[10] - cameraTargetPosition = p.getDebugVisualizerCamera()[11] - - # Get vectors used for movement on x,y,z Vector - xVec = [p.getDebugVisualizerCamera()[2][i] for i in [0, 4, 8]] - yVec = [p.getDebugVisualizerCamera()[2][i] for i in [2, 6, 10]] - zVec = (0, 0, 1) # [p.getDebugVisualizerCamera()[2][i] for i in [1, 5, 9]] - - # Check the mouse state - if mouse: - for m in mouse: - - mouseX = m[2] - mouseY = m[1] - - # update mouseState - # Left Mouse button - if m[0] == 2 and m[3] == 0: - mouseState[0] = m[4] - # Middle mouse butto (scroll wheel) - if m[0] == 2 and m[3] == 1: - mouseState[1] = m[4] - # right mouse button - if m[0] == 2 and m[3] == 2: - mouseState[2] = m[4] - - # change visibility by clicking the mousewheel - if m[4] == 6 and m[3] == 1 and visible == 1: - visible = 0 - elif m[4] == 6 and visible == 0: - visible = 1 - - # camera movement when the left mouse button is pressed - if mouseState[0] == 3: - speedX = abs(oldMouseX - mouseX) if (abs(oldMouseX - mouseX)) < maxSpeed else maxSpeed - speedY = abs(oldMouseY - mouseY) if (abs(oldMouseY - mouseY)) < maxSpeed else maxSpeed - - # max angle of 89.5 and -89.5 to make sure the camera does not flip (is annoying) - if mouseX < oldMouseX: - if (cameraPitch + speedX) < 89.5: - cameraPitch += (speedX / 4) + 1 - elif mouseX > oldMouseX: - if (cameraPitch - speedX) > -89.5: - cameraPitch -= (speedX / 4) + 1 - - if mouseY < oldMouseY: - cameraYaw += (speedY / 4) + 1 - elif mouseY > oldMouseY: - cameraYaw -= (speedY / 4) + 1 - - if mouseState[1] == 3: - speedX = abs(oldMouseX - mouseX) - factor = 0.05 - - if mouseX < oldMouseX: - dist = dist - speedX * factor - elif mouseX > oldMouseX: - dist = dist + speedX * factor - dist = max(dist, 0.1) - - # camera movement when the right mouse button is pressed - if mouseState[2] == 3: - speedX = abs(oldMouseX - mouseX) if (abs(oldMouseX - mouseX)) < 5 else 5 - speedY = abs(oldMouseY - mouseY) if (abs(oldMouseY - mouseY)) < 5 else 5 - factor = 0.05 - - if mouseX < oldMouseX: - cameraTargetPosition = np.subtract(cameraTargetPosition, - np.multiply(np.multiply(zVec, factor), speedX)) - elif mouseX > oldMouseX: - cameraTargetPosition = np.add(cameraTargetPosition, - np.multiply(np.multiply(zVec, factor), speedX)) - - if mouseY < oldMouseY: - cameraTargetPosition = np.add(cameraTargetPosition, - np.multiply(np.multiply(xVec, factor), speedY)) - elif mouseY > oldMouseY: - cameraTargetPosition = np.subtract(cameraTargetPosition, - np.multiply(np.multiply(xVec, factor), speedY)) - # update oldMouse values - oldMouseY, oldMouseX = mouseY, mouseX - - # check the keyboard state - if keys: - # if shift is pressed, double the speed - if p.B3G_SHIFT in keys: - speedMult = 5 - else: - speedMult = 2.5 - - # if control is pressed, the movements caused by the arrowkeys, the '+' as well as the '-' key - # change - if p.B3G_CONTROL in keys: - - # the up and down arrowkeys cause the targetPos to move along the z axis of the map - if p.B3G_DOWN_ARROW in keys: - cameraTargetPosition = np.subtract(cameraTargetPosition, - np.multiply(np.multiply(zVec, 0.03), speedMult)) - elif p.B3G_UP_ARROW in keys: - cameraTargetPosition = np.add(cameraTargetPosition, - np.multiply(np.multiply(zVec, 0.03), speedMult)) - - # left and right arrowkeys cause the targetPos to move horizontally relative to the camera - if p.B3G_LEFT_ARROW in keys: - cameraTargetPosition = np.subtract(cameraTargetPosition, - np.multiply(np.multiply(xVec, 0.03), speedMult)) - elif p.B3G_RIGHT_ARROW in keys: - cameraTargetPosition = np.add(cameraTargetPosition, - np.multiply(np.multiply(xVec, 0.03), speedMult)) - - # the '+' and '-' keys cause the targetpos to move forwards and backwards relative to the camera - # while the camera stays at a constant distance. SHIFT + '=' is for US layout - if ord("+") in keys or p.B3G_SHIFT in keys and ord("=") in keys: - cameraTargetPosition = np.subtract(cameraTargetPosition, - np.multiply(np.multiply(yVec, 0.03), speedMult)) - elif ord("-") in keys: - cameraTargetPosition = np.add(cameraTargetPosition, - np.multiply(np.multiply(yVec, 0.03), speedMult)) - - # standard bindings for thearrowkeys, the '+' as well as the '-' key - else: - - # left and right arrowkeys cause the camera to rotate around the yaw axis - if p.B3G_RIGHT_ARROW in keys: - cameraYaw += (360 / width) * speedMult - elif p.B3G_LEFT_ARROW in keys: - cameraYaw -= (360 / width) * speedMult - - # the up and down arrowkeys cause the camera to rotate around the pitch axis - if p.B3G_DOWN_ARROW in keys: - if (cameraPitch + (360 / height) * speedMult) < 89.5: - cameraPitch += (360 / height) * speedMult - elif p.B3G_UP_ARROW in keys: - if (cameraPitch - (360 / height) * speedMult) > -89.5: - cameraPitch -= (360 / height) * speedMult - - # the '+' and '-' keys cause the camera to zoom towards and away from the targetPos without - # moving it. SHIFT + '=' is for US layout since the events can't handle shift plus something - if ord("+") in keys or p.B3G_SHIFT in keys and ord("=") in keys: - if (dist - (dist * 0.02) * speedMult) > 0.1: - dist -= dist * 0.02 * speedMult - elif ord("-") in keys: - dist += dist * 0.02 * speedMult - - p.resetDebugVisualizerCamera(cameraDistance=dist, cameraYaw=cameraYaw, cameraPitch=cameraPitch, - cameraTargetPosition=cameraTargetPosition) - if visible == 0: - cameraTargetPosition = (0.0, -50, 50) - p.resetBasePositionAndOrientation(sphereUid, cameraTargetPosition, [0, 0, 0, 1]) - time.sleep(1. / 80.) - - -class Object: - """ - Represents a spawned Object in the BulletWorld. - """ - - def __init__(self, name: str, type: Union[str, ObjectType], path: str, - pose: Pose = None, - world: BulletWorld = None, - color: Optional[List[float]] = [1, 1, 1, 1], - ignoreCachedFiles: Optional[bool] = False): - """ - The constructor loads the urdf file into the given BulletWorld, if no BulletWorld is specified the - :py:attr:`~BulletWorld.current_bullet_world` will be used. It is also possible to load .obj and .stl file into the BulletWorld. - The color parameter is only used when loading .stl or .obj files, for URDFs :func:`~Object.set_color` can be used. - - :param name: The name of the object - :param type: The type of the object - :param path: The path to the source file, if only a filename is provided then the resourcer directories will be searched - :param pose: The pose at which the Object should be spawned - :param world: The BulletWorld in which the object should be spawned, if no world is specified the :py:attr:`~BulletWorld.current_bullet_world` will be used - :param color: The color with which the object should be spawned. - :param ignoreCachedFiles: If true the file will be spawned while ignoring cached files. - """ - if not pose: - pose = Pose() - self.world: BulletWorld = world if world is not None else BulletWorld.current_bullet_world - self.local_transformer = LocalTransformer() - self.name: str = name - self.type: str = type - self.color: List[float] = color - pose_in_map = self.local_transformer.transform_pose(pose, "map") - position, orientation = pose_in_map.to_list() - self.id, self.path = _load_object(name, path, position, orientation, self.world, color, ignoreCachedFiles) - self.joints: Dict[str, int] = self._joint_or_link_name_to_id("joint") - self.links: Dict[str, int] = self._joint_or_link_name_to_id("link") - self.attachments: Dict[Object, List] = {} - self.cids: Dict[Object, int] = {} - self.original_pose = pose_in_map - - self.tf_frame = ("shadow/" if self.world.is_shadow_world else "") + self.name + "_" + str(self.id) - - # This means "world" is not the shadow world since it has a reference to a shadow world - if self.world.shadow_world != None: - self.world.world_sync.add_obj_queue.put( - [name, type, path, position, orientation, self.world.shadow_world, color, self]) - - with open(self.path) as f: - self.urdf_object = URDF.from_xml_string(f.read()) - if self.urdf_object.name == robot_description.name and not BulletWorld.robot: - BulletWorld.robot = self - - self.links[self.urdf_object.get_root()] = -1 - - self._current_pose = pose_in_map - self._current_link_poses = {} - self._current_link_transforms = {} - self._current_joint_states = {} - self._init_current_joint_states() - self._update_link_poses() - - self.base_origin_shift = np.array(position) - np.array(self.get_base_origin().position_as_list()) - self.local_transformer.update_transforms_for_object(self) - self.link_to_geometry = self._get_geometry_for_link() - - self.world.objects.append(self) - - def __repr__(self): - skip_attr = ["links", "joints", "urdf_object", "attachments", "cids", "_current_link_poses", - "_current_link_transforms", "link_to_geometry"] - return self.__class__.__qualname__ + f"(" + ', \n'.join( - [f"{key}={value}" if key not in skip_attr else f"{key}: ..." for key, value in self.__dict__.items()]) + ")" - - def remove(self) -> None: - """ - Removes this object from the BulletWorld it currently resides in. - For the object to be removed it has to be detached from all objects it - is currently attached to. After this is done a call to PyBullet is done - to remove this Object from the simulation. - """ - for obj in self.attachments.keys(): - self.detach(obj) - self.world.objects.remove(self) - # This means the current world of the object is not the shaow world, since it - # has a reference to the shadow world - if self.world.shadow_world != None: - self.world.world_sync.remove_obj_queue.put(self) - self.world.world_sync.remove_obj_queue.join() - p.removeBody(self.id, physicsClientId=self.world.client_id) - if BulletWorld.robot == self: - BulletWorld.robot = None - - def attach(self, object: Object, link: Optional[str] = None, loose: Optional[bool] = False) -> None: - """ - Attaches another object to this object. This is done by - saving the transformation between the given link, if there is one, and - the base pose of the other object. Additionally, the name of the link, to - which the object is attached, will be saved. - Furthermore, a constraint of pybullet will be created so the attachment - also works while simulation. - Loose attachments means that the attachment will only be one-directional. For example, if this object moves the - other, attached, object will also move but not the other way around. - - :param object: The other object that should be attached - :param link: The link of this object to which the other object should be - :param loose: If the attachment should be a loose attachment. - """ - link_id = self.get_link_id(link) if link else -1 - link_to_object = self._calculate_transform(object, link) - self.attachments[object] = [link_to_object, link, loose] - object.attachments[self] = [link_to_object.invert(), None, False] - - cid = p.createConstraint(self.id, link_id, object.id, -1, p.JOINT_FIXED, - [0, 1, 0], link_to_object.translation_as_list(), [0, 0, 0], - link_to_object.rotation_as_list(), - physicsClientId=self.world.client_id) - self.cids[object] = cid - object.cids[self] = cid - self.world.attachment_event(self, [self, object]) - - def detach(self, object: Object) -> None: - """ - Detaches another object from this object. This is done by - deleting the attachment from the attachments dictionary of both objects - and deleting the constraint of pybullet. - Afterward the detachment event of the corresponding BulletWorld will be fired. - - :param object: The object which should be detached - """ - del self.attachments[object] - del object.attachments[self] - - p.removeConstraint(self.cids[object], physicsClientId=self.world.client_id) - - del self.cids[object] - del object.cids[self] - self.world.detachment_event(self, [self, object]) - - def detach_all(self) -> None: - """ - Detach all objects attached to this object. - """ - attachments = self.attachments.copy() - for att in attachments.keys(): - self.detach(att) - - def get_position(self) -> Point: - """ - Returns the position of this Object as a list of xyz. - - :return: The current position of this object - """ - return self.get_pose().position - - def get_orientation(self) -> Quaternion: - """ - Returns the orientation of this object as a list of xyzw, representing a quaternion. - - :return: A list of xyzw - """ - return self.get_pose().orientation - - def get_pose(self) -> Pose: - """ - Returns the position of this object as a list of xyz. Alias for :func:`~Object.get_position`. - - :return: The current pose of this object - """ - return self._current_pose - - def set_pose(self, pose: Pose, base: bool = False) -> None: - """ - Sets the Pose of the object. - - :param pose: New Pose for the object - :param base: If True places the object base instead of origin at the specified position and orientation - """ - pose_in_map = self.local_transformer.transform_pose(pose, "map") - position, orientation = pose_in_map.to_list() - if base: - position = np.array(position) + self.base_origin_shift - p.resetBasePositionAndOrientation(self.id, position, orientation, self.world.client_id) - self._current_pose = pose_in_map - self._update_link_poses() - self._set_attached_objects([self]) - - @property - def pose(self) -> Pose: - """ - Property that returns the current position of this Object. - - :return: The position as a list of xyz - """ - return self.get_pose() - - @pose.setter - def pose(self, value: Pose) -> None: - """ - Sets the Pose of the Object to the given value. Function for attribute use. - - :param value: New Pose of the Object - """ - self.set_pose(value) - - def move_base_to_origin_pos(self) -> None: - """ - Move the object such that its base will be at the current origin position. - This is useful when placing objects on surfaces where you want the object base in contact with the surface. - """ - self.set_pose(self.get_pose(), base=True) - - def _set_attached_objects(self, prev_object: List[Object]) -> None: - """ - Updates the positions of all attached objects. This is done - by calculating the new pose in world coordinate frame and setting the - base pose of the attached objects to this new pose. - After this the _set_attached_objects method of all attached objects - will be called. - - :param prev_object: A list of Objects that were already moved, these will be excluded to prevent loops in the update. - """ - for obj in self.attachments: - if obj in prev_object: - continue - if self.attachments[obj][2]: - # Updates the attachment transformation and contraint if the - # attachment is loos, instead of updating the position of all attached objects - link_to_object = self._calculate_transform(obj, self.attachments[obj][1]) - link_id = self.get_link_id(self.attachments[obj][1]) if self.attachments[obj][1] else -1 - self.attachments[obj][0] = link_to_object - obj.attachments[self][0] = link_to_object.invert() - p.removeConstraint(self.cids[obj], physicsClientId=self.world.client_id) - cid = p.createConstraint(self.id, link_id, obj.id, -1, p.JOINT_FIXED, [0, 0, 0], - link_to_object.translation_as_list(), - [0, 0, 0], link_to_object.rotation_as_list(), - physicsClientId=self.world.client_id) - self.cids[obj] = cid - obj.cids[self] = cid - else: - link_to_object = self.attachments[obj][0] - - world_to_object = self.local_transformer.transform_pose(link_to_object.to_pose(), "map") - p.resetBasePositionAndOrientation(obj.id, world_to_object.position_as_list(), - world_to_object.orientation_as_list(), - physicsClientId=self.world.client_id) - obj._current_pose = world_to_object - obj._set_attached_objects(prev_object + [self]) - - def _calculate_transform(self, obj: Object, link: str = None) -> Transform: - """ - Calculates the transformation between another object and the given - link of this object. If no link is provided then the base position will be used. - - :param obj: The other object for which the transformation should be calculated - :param link: The optional link name - :return: The transformation from the link (or base position) to the other objects base position - """ - transform = self.local_transformer.transform_to_object_frame(obj.pose, self, link) - - return Transform(transform.position_as_list(), transform.orientation_as_list(), transform.frame, obj.tf_frame) - - def set_position(self, position: Union[Pose, Point], base=False) -> None: - """ - Sets this Object to the given position, if base is true the bottom of the Object will be placed at the position - instead of the origin in the center of the Object. The given position can either be a Pose, in this case only the - position is used or a geometry_msgs.msg/Point which is the position part of a Pose. - - :param position: Target position as xyz. - :param base: If the bottom of the Object should be placed or the origin in the center. - """ - pose = Pose() - if type(position) == Pose: - target_position = position.position - pose.frame = position.frame - else: - target_position = position - - pose.pose.position = target_position - pose.pose.orientation = self.get_orientation() - self.set_pose(pose, base=base) - - def set_orientation(self, orientation: Union[Pose, Quaternion]) -> None: - """ - Sets the orientation of the Object to the given orientation. Orientation can either be a Pose, in this case only - the orientation of this pose is used or a geometry_msgs.msg/Quaternion which is the orientation of a Pose. - - :param orientation: Target orientation given as a list of xyzw. - """ - pose = Pose() - if type(orientation) == Pose: - target_orientation = orientation.orientation - pose.frame = orientation.frame - else: - target_orientation = orientation - - pose.pose.position = self.get_position() - pose.pose.orientation = target_orientation - self.set_pose(pose) - - def _joint_or_link_name_to_id(self, type: str) -> Dict[str, int]: - """ - Creates a dictionary which maps the link or joint name to the unique ids used by pybullet. - - :param type: Determines if the dictionary should be for joints or links - :return: A dictionary that maps joint or link names to unique ids - """ - nJoints = p.getNumJoints(self.id, self.world.client_id) - joint_name_to_id = {} - info = 1 if type == "joint" else 12 - for i in range(0, nJoints): - joint_info = p.getJointInfo(self.id, i, self.world.client_id) - joint_name_to_id[joint_info[info].decode('utf-8')] = joint_info[0] - return joint_name_to_id - - def get_joint_id(self, name: str) -> int: - """ - Returns the unique id for a joint name. As used by PyBullet. - - :param name: The joint name - :return: The unique id - """ - return self.joints[name] - - def get_link_id(self, name: str) -> int: - """ - Returns a unique id for a link name. As used by PyBullet. - - :param name: The link name - :return: The unique id - """ - return self.links[name] - - def get_link_by_id(self, id: int) -> str: - """ - Returns the name of a link for a given unique PyBullet id - - :param id: PyBullet id for link - :return: The link name - """ - return dict(zip(self.links.values(), self.links.keys()))[id] - - def get_joint_by_id(self, id: int) -> str: - """ - Returns the joint name for a unique PyBullet id - - :param id: The Pybullet id of for joint - :return: The joint name - """ - return dict(zip(self.joints.values(), self.joints.keys()))[id] - - def get_link_relative_to_other_link(self, source_frame: str, target_frame: str) -> Pose: - """ - Calculates the position of a link in the coordinate frame of another link. - - :param source_frame: The name of the source frame - :param target_frame: The name of the target frame - :return: The pose of the source frame in the target frame - """ - source_pose = self.get_link_pose(source_frame) - return self.local_transformer.transform_to_object_frame(source_pose, self, target_frame) - - def get_link_position(self, name: str) -> Point: - """ - Returns the position of a link of this Object. Position is returned as a list of xyz. - - :param name: The link name - :return: The link position as xyz - """ - return self.get_link_pose(name).position - - def get_link_orientation(self, name: str) -> Quaternion: - """ - Returns the orientation of a link of this Object. Orientation is returned as a quaternion. - - :param name: The name of the link - :return: The orientation of the link as a quaternion - """ - return self.get_link_pose(name).orientation - - def get_link_pose(self, name: str) -> Pose: - """ - Returns a Pose of the link corresponding to the given name. The returned Pose will be in world coordinate frame. - - :param name: Link name for which a Pose should returned - :return: The pose of the link - """ - if name in self.links.keys() and self.links[name] == -1: - return self.get_pose() - return self._current_link_poses[name] - # return Pose(*p.getLinkState(self.id, self.links[name], physicsClientId=self.world.client_id)[4:6]) - - def set_joint_state(self, joint_name: str, joint_pose: float) -> None: - """ - Sets the state of the given joint to the given joint pose. If the pose is outside the joint limits, as stated - in the URDF, an error will be printed. However, the joint will be set either way. - - :param joint_name: The name of the joint - :param joint_pose: The target pose for this joint - """ - # TODO Limits for rotational (infinitie) joints are 0 and 1, they should be considered seperatly - up_lim, low_lim = p.getJointInfo(self.id, self.joints[joint_name], physicsClientId=self.world.client_id)[ - 8:10] - if low_lim > up_lim: - low_lim, up_lim = up_lim, low_lim - if not low_lim <= joint_pose <= up_lim: - logging.error( - f"The joint position has to be within the limits of the joint. The joint limits for {joint_name} are {low_lim} and {up_lim}") - logging.error(f"The given joint position was: {joint_pose}") - # Temporarily disabled because kdl outputs values exciting joint limits - # return - p.resetJointState(self.id, self.joints[joint_name], joint_pose, physicsClientId=self.world.client_id) - self._current_joint_states[joint_name] = joint_pose - # self.local_transformer.update_transforms_for_object(self) - self._update_link_poses() - self._set_attached_objects([self]) - - def set_joint_states(self, joint_poses: dict) -> None: - """ - Sets the current state of multiple joints at once, this method should be preferred when setting multiple joints - at once instead of running :func:`~Object.set_joint_state` in a loop. - - :param joint_poses: - :return: - """ - for joint_name, joint_pose in joint_poses.items(): - p.resetJointState(self.id, self.joints[joint_name], joint_pose, physicsClientId=self.world.client_id) - self._current_joint_states[joint_name] = joint_pose - self._update_link_poses() - self._set_attached_objects([self]) - - def get_joint_state(self, joint_name: str) -> float: - """ - Returns the joint state for the given joint name. - - :param joint_name: The name of the joint - :return: The current pose of the joint - """ - return self._current_joint_states[joint_name] - - def contact_points(self) -> List: - """ - Returns a list of contact points of this Object with other Objects. For a more detailed explanation of the returned - list please look at `PyBullet Doc `_ - - :return: A list of all contact points with other objects - """ - return p.getContactPoints(self.id) - - def contact_points_simulated(self) -> List: - """ - Returns a list of all contact points between this Object and other Objects after stepping the simulation once. - For a more detailed explanation of the returned - list please look at `PyBullet Doc `_ - - :return: A list of contact points between this Object and other Objects - """ - s = self.world.save_state() - p.stepSimulation(self.world.client_id) - contact_points = self.contact_points() - self.world.restore_state(*s) - return contact_points - - def update_joints_from_topic(self, topic_name: str) -> None: - """ - Updates the joints of this object with positions obtained from a topic with the message type JointState. - Joint names on the topic have to correspond to the joints of this object otherwise an error message will be logged. - - :param topic_name: Name of the topic with the joint states - """ - msg = rospy.wait_for_message(topic_name, JointState) - joint_names = msg.name - joint_positions = msg.position - if set(joint_names).issubset(self.joints.keys()): - for i in range(len(joint_names)): - self.set_joint_state(joint_names[i], joint_positions[i]) - else: - add_joints = set(joint_names) - set(self.joints.keys()) - rospy.logerr(f"There are joints in the published joint state which are not in this model: /n \ - The following joint{'s' if len(add_joints) != 1 else ''}: {add_joints}") - - def update_pose_from_tf(self, frame: str) -> None: - """ - Updates the pose of this object from a TF message. - - :param frame: Name of the TF frame from which the position should be taken - """ - tf_listener = tf.TransformListener() - time.sleep(0.5) - position, orientation = tf_listener.lookupTransform(frame, "map", rospy.Time(0)) - position = [position[0][0] * -1, - position[0][1] * -1, - position[0][2]] - self.set_position(Pose(position, orientation)) - - def set_color(self, color: List[float], link: Optional[str] = "") -> None: - """ - Changes the color of this object, the color has to be given as a list - of RGBA values. Optionally a link name can can be provided, if no link - name is provided all links of this object will be colored. - - :param color: The color as RGBA values between 0 and 1 - :param link: The link name of the link which should be colored - """ - if link == "": - # Check if there is only one link, this is the case for primitive - # forms or if loaded from an .stl or .obj file - if self.links != {}: - for link_id in self.links.values(): - p.changeVisualShape(self.id, link_id, rgbaColor=color, physicsClientId=self.world.client_id) - else: - p.changeVisualShape(self.id, -1, rgbaColor=color, physicsClientId=self.world.client_id) - else: - p.changeVisualShape(self.id, self.links[link], rgbaColor=color, physicsClientId=self.world.client_id) - - def get_color(self, link: Optional[str] = None) -> Union[List[float], Dict[str, List[float]], None]: - """ - This method returns the color of this object or a link of this object. If no link is given then the - return is either: - - 1. A list with the color as RGBA values, this is the case if the object only has one link (this - happens for example if the object is spawned from a .obj or .stl file) - 2. A dict with the link name as key and the color as value. The color is given as RGBA values. - Please keep in mind that not every link may have a color. This is dependent on the URDF from which the - object is spawned. - - If a link is specified then the return is a list with RGBA values representing the color of this link. - It may be that this link has no color, in this case the return is None as well as an error message. - - :param link: the link name for which the color should be returned. - :return: The color of the object or link, or a dictionary containing every colored link with its color - """ - visual_data = p.getVisualShapeData(self.id, physicsClientId=self.world.client_id) - swap = {v: k for k, v in self.links.items()} - links = list(map(lambda x: swap[x[1]] if x[1] != -1 else "base", visual_data)) - colors = list(map(lambda x: x[7], visual_data)) - link_to_color = dict(zip(links, colors)) - - if link: - if link in link_to_color.keys(): - return link_to_color[link] - elif link not in self.links.keys(): - rospy.logerr(f"The link '{link}' is not part of this obejct") - return None - else: - rospy.logerr(f"The link '{link}' has no color") - return None - - if len(visual_data) == 1: - return list(visual_data[0][7]) - else: - return link_to_color - - def get_AABB(self, link_name: Optional[str] = None) -> Tuple[List[float], List[float]]: - """ - Returns the axis aligned bounding box of this object, optionally a link name can be provided in this case - the axis aligned bounding box of the link will be returned. The return of this method are two points in - world coordinate frame which define a bounding box. - - :param link_name: The Optional name of a link of this object. - :return: Two lists of x,y,z which define the bounding box. - """ - if link_name: - return p.getAABB(self.id, self.links[link_name], self.world.client_id) - else: - return p.getAABB(self.id, physicsClientId=self.world.client_id) - - def get_base_origin(self, link_name: Optional[str] = None) -> Pose: - """ - Returns the origin of the base/bottom of an object/link - - :param link_name: The link name for which the bottom position should be returned - :return: The position of the bottom of this Object or link - """ - aabb = self.get_AABB(link_name=link_name) - base_width = np.absolute(aabb[0][0] - aabb[1][0]) - base_length = np.absolute(aabb[0][1] - aabb[1][1]) - return Pose([aabb[0][0] + base_width / 2, aabb[0][1] + base_length / 2, aabb[0][2]], - self.get_pose().orientation_as_list()) - - def get_joint_limits(self, joint: str) -> Tuple[float, float]: - """ - Returns the lower and upper limit of a joint, if the lower limit is higher - than the upper they are swapped to ensure the lower limit is always the smaller one. - - :param joint: The name of the joint for which the limits should be found. - :return: The lower and upper limit of the joint. - """ - if joint not in self.joints.keys(): - raise KeyError(f"The given Joint: {joint} is not part of this object") - lower, upper = p.getJointInfo(self.id, self.joints[joint], self.world.client_id)[8: 10] - if lower > upper: - lower, upper = upper, lower - return lower, upper - - def get_joint_axis(self, joint_name: str) -> Tuple[float]: - """ - Returns the axis along which a joint is moving. The given joint_name has to be part of this object. - - :param joint_name: Name of the joint for which the axis should be returned. - :return: The axis a vector of xyz - """ - return p.getJointInfo(self.id, self.joints[joint_name], self.world.client_id)[13] - - def get_joint_type(self, joint_name: str) -> JointType: - """ - Returns the type of the joint as element of the Enum :mod:`~pycram.enums.JointType`. - - :param joint_name: Joint name for which the type should be returned - :return: The type of the joint - """ - joint_type = p.getJointInfo(self.id, self.joints[joint_name], self.world.client_id)[2] - return JointType(joint_type) - - def find_joint_above(self, link_name: str, joint_type: JointType) -> str: - """ - Traverses the chain from 'link_name' to the URDF origin and returns the first joint that is of type 'joint_type'. - - :param link_name: Link name above which the joint should be found - :param joint_type: Joint type that should be searched for - :return: Name of the first joint which has the given type - """ - chain = self.urdf_object.get_chain(self.urdf_object.get_root(), link_name) - reversed_chain = reversed(chain) - container_joint = None - for element in reversed_chain: - if element in self.joints and self.get_joint_type(element) == joint_type: - container_joint = element - break - if not container_joint: - rospy.logwarn(f"No joint of type {joint_type} found above link {link_name}") - return container_joint - - def get_complete_joint_state(self) -> Dict[str: float]: - """ - Returns the complete joint state of the object as a dictionary of joint names and joint values. - - :return: A dictionary with the complete joint state - """ - return self._current_joint_states - - def get_link_tf_frame(self, link_name: str) -> str: - """ - Returns the name of the tf frame for the given link name. This method does not check if the given name is - actually a link of this object. - - :param link_name: Name of a link for which the tf frame should be returned - :return: A TF frame name for a specific link - """ - return self.tf_frame + "/" + link_name - - def _get_geometry_for_link(self) -> Dict[str, urdf_parser_py.urdf.Geometry]: - """ - Extracts the geometry information for each collision of each link and links them to the respective link. - - :return: A dictionary with link name as key and geometry information as value - """ - link_to_geometry = {} - for link in self.links.keys(): - link_obj = self.urdf_object.link_map[link] - if not link_obj.collision: - link_to_geometry[link] = None - else: - link_to_geometry[link] = link_obj.collision.geometry - return link_to_geometry - - def _update_link_poses(self) -> None: - """ - Updates the cached poses and transforms for each link of this Object - """ - for link_name in self.links.keys(): - if link_name == self.urdf_object.get_root(): - self._current_link_poses[link_name] = self._current_pose - self._current_link_transforms[link_name] = self._current_pose.to_transform(self.tf_frame) - else: - self._current_link_poses[link_name] = Pose(*p.getLinkState(self.id, self.links[link_name], - physicsClientId=self.world.client_id)[4:6]) - self._current_link_transforms[link_name] = self._current_link_poses[link_name].to_transform( - self.get_link_tf_frame(link_name)) - - def _init_current_joint_states(self) -> None: - """ - Initialize the cached joint position for each joint. - """ - for joint_name in self.joints.keys(): - self._current_joint_states[joint_name] = \ - p.getJointState(self.id, self.joints[joint_name], physicsClientId=self.world.client_id)[0] - - -def filter_contact_points(contact_points, exclude_ids) -> List: - """ - Returns a list of contact points where Objects that are in the 'exclude_ids' list are removed. - - :param contact_points: A list of contact points - :param exclude_ids: A list of unique ids of Objects that should be removed from the list - :return: A list containing 'contact_points' without Objects that are in 'exclude_ids' - """ - return list(filter(lambda cp: cp[2] not in exclude_ids, contact_points)) - - -def get_path_from_data_dir(file_name: str, data_directory: str) -> str: - """ - Returns the full path for a given file name in the given directory. If there is no file with the given filename - this method returns None. - - :param file_name: The filename of the searched file. - :param data_directory: The directory in which to search for the file. - :return: The full path in the filesystem or None if there is no file with the filename in the directory - """ - dir = pathlib.Path(data_directory) - for file in os.listdir(data_directory): - if file == file_name: - return data_directory + f"/{file_name}" - - -def _get_robot_name_from_urdf(urdf_string: str) -> str: - """ - Extracts the robot name from the 'robot_name' tag of a URDF. - - :param urdf_string: The URDF as string. - :return: The name of the robot described by the URDF. - """ - res = re.findall(r"robot\ *name\ *=\ *\"\ *[a-zA-Z_0-9]*\ *\"", urdf_string) - if len(res) == 1: - begin = res[0].find("\"") - end = res[0][begin + 1:].find("\"") - robot = res[0][begin + 1:begin + 1 + end].lower() - return robot - - -def _load_object(name: str, - path: str, - position: List[float], - orientation: List[float], - world: BulletWorld, - color: List[float], - ignoreCachedFiles: bool) -> Tuple[int, str]: - """ - Loads an object to the given BulletWorld with the given position and orientation. The color will only be - used when an .obj or .stl file is given. - If a .obj or .stl file is given, before spawning, an urdf file with the .obj or .stl as mesh will be created - and this URDf file will be loaded instead. - When spawning a URDf file a new file will be created in the cache directory, if there exists none. - This new file will have resolved mesh file paths, meaning there will be no references - to ROS packges instead there will be absolute file paths. - - :param name: The name of the object which should be spawned - :param path: The path to the source file or the name on the ROS parameter server - :param position: The position in which the object should be spawned - :param orientation: The orientation in which the object should be spawned - :param world: The BulletWorld to which the Object should be spawned - :param color: The color of the object, only used when .obj or .stl file is given - :param ignoreCachedFiles: Whether to ignore files in the cache directory. - :return: The unique id of the object and the path to the file used for spawning - """ - pa = pathlib.Path(path) - extension = pa.suffix - world, world_id = _world_and_id(world) - if re.match("[a-zA-Z_0-9].[a-zA-Z0-9]", path): - for dir in world.data_directory: - path = get_path_from_data_dir(path, dir) - if path: break - - if not path: - raise FileNotFoundError( - f"File {pa.name} could not be found in the resource directory {world.data_directory}") - # rospack = rospkg.RosPack() - # cach_dir = rospack.get_path('pycram') + '/resources/cached/' - cach_dir = world.data_directory[0] + '/cached/' - if not pathlib.Path(cach_dir).exists(): - os.mkdir(cach_dir) - - # if file is not yet cached corrcet the urdf and save if in the cache directory - if not _is_cached(path, name, cach_dir) or ignoreCachedFiles: - if extension == ".obj" or extension == ".stl": - path = _generate_urdf_file(name, path, color, cach_dir) - elif extension == ".urdf": - with open(path, mode="r") as f: - urdf_string = fix_missing_inertial(f.read()) - urdf_string = remove_error_tags(urdf_string) - urdf_string = fix_link_attributes(urdf_string) - try: - urdf_string = _correct_urdf_string(urdf_string) - except rospkg.ResourceNotFound as e: - rospy.logerr(f"Could not find resource package linked in this URDF") - raise e - path = cach_dir + pa.name - with open(path, mode="w") as f: - f.write(urdf_string) - else: # Using the urdf from the parameter server - urdf_string = rospy.get_param(path) - path = cach_dir + name + ".urdf" - with open(path, mode="w") as f: - f.write(_correct_urdf_string(urdf_string)) - # save correct path in case the file is already in the cache directory - elif extension == ".obj" or extension == ".stl": - path = cach_dir + pa.stem + ".urdf" - elif extension == ".urdf": - path = cach_dir + pa.name - else: - path = cach_dir + name + ".urdf" - - try: - obj = p.loadURDF(path, basePosition=position, baseOrientation=orientation, physicsClientId=world_id) - return obj, path - except p.error as e: - logging.error( - "The File could not be loaded. Plese note that the path has to be either a URDF, stl or obj file or the name of an URDF string on the parameter server.") - os.remove(path) - raise (e) - # print(f"{bcolors.BOLD}{bcolors.WARNING}The path has to be either a path to a URDf file, stl file, obj file or the name of a URDF on the parameter server.{bcolors.ENDC}") - - -def _is_cached(path: str, name: str, cach_dir: str) -> bool: - """ - Checks if the file in the given path is already cached or if - there is already a cached file with the given name, this is the case if a .stl, .obj file or a description from - the parameter server is used. - - :param path: The path given by the user to the source file. - :param name: The name for this object. - :param cach_dir: The absolute path the cach directory in the pycram package. - :return: True if there already exists a chached file, False in any other case. - """ - file_name = pathlib.Path(path).name - p = pathlib.Path(cach_dir + file_name) - if p.exists(): - return True - # Returns filename without the filetype, e.g. returns "test" for "test.txt" - file_stem = pathlib.Path(path).stem - p = pathlib.Path(cach_dir + file_stem + ".urdf") - if p.exists(): - return True - return False - - -def _correct_urdf_string(urdf_string: str) -> str: - """ - Changes paths for files in the URDF from ROS paths to paths in the file system. Since PyBullet can't deal with ROS - package paths. - - :param urdf_name: The name of the URDf on the parameter server - :return: The URDF string with paths in the filesystem instead of ROS packages - """ - r = rospkg.RosPack() - new_urdf_string = "" - for line in urdf_string.split('\n'): - if "package://" in line: - s = line.split('//') - s1 = s[1].split('/') - path = r.get_path(s1[0]) - line = line.replace("package://" + s1[0], path) - new_urdf_string += line + '\n' - - return fix_missing_inertial(new_urdf_string) - - -def fix_missing_inertial(urdf_string: str) -> str: - """ - Insert inertial tags for every URDF link that has no inertia. - This is used to prevent PyBullet from dumping warnings in the terminal - - :param urdf_string: The URDF description as string - :returns: The new, corrected URDF description as string. - """ - - inertia_tree = xml.etree.ElementTree.ElementTree(xml.etree.ElementTree.Element("inertial")) - inertia_tree.getroot().append(xml.etree.ElementTree.Element("mass", {"value": "0.1"})) - inertia_tree.getroot().append(xml.etree.ElementTree.Element("origin", {"rpy": "0 0 0", "xyz": "0 0 0"})) - inertia_tree.getroot().append(xml.etree.ElementTree.Element("inertia", {"ixx": "0.01", - "ixy": "0", - "ixz": "0", - "iyy": "0.01", - "iyz": "0", - "izz": "0.01"})) - - # create tree from string - tree = xml.etree.ElementTree.ElementTree(xml.etree.ElementTree.fromstring(urdf_string)) - - for link_element in tree.iter("link"): - inertial = [*link_element.iter("inertial")] - if len(inertial) == 0: - link_element.append(inertia_tree.getroot()) - - return xml.etree.ElementTree.tostring(tree.getroot(), encoding='unicode') - - -def remove_error_tags(urdf_string: str) -> str: - """ - Removes all tags in the removing_tags list from the URDF since these tags are known to cause errors with the - URDF_parser - - :param urdf_string: String of the URDF from which the tags should be removed - :return: The URDF string with the tags removed - """ - tree = xml.etree.ElementTree.ElementTree(xml.etree.ElementTree.fromstring(urdf_string)) - removing_tags = ["gazebo", "transmission"] - for tag_name in removing_tags: - all_tags = tree.findall(tag_name) - for tag in all_tags: - tree.getroot().remove(tag) - - return xml.etree.ElementTree.tostring(tree.getroot(), encoding='unicode') - - -def fix_link_attributes(urdf_string: str) -> str: - """ - Removes the attribute 'type' from links since this is not parsable by the URDF parser. - - :param urdf_string: The string of the URDF from which the attributes should be removed - :return: The URDF string with the attributes removed - """ - tree = xml.etree.ElementTree.ElementTree(xml.etree.ElementTree.fromstring(urdf_string)) - - for link in tree.iter("link"): - if "type" in link.attrib.keys(): - del link.attrib["type"] - - return xml.etree.ElementTree.tostring(tree.getroot(), encoding='unicode') - - -def _generate_urdf_file(name: str, path: str, color: List[float], cach_dir: str) -> str: - """ - Generates an URDf file with the given .obj or .stl file as mesh. In addition, the given color will be - used to crate a material tag in the URDF. The resulting file will then be saved in the cach_dir path with the name - as filename. - - :param name: The name of the object - :param path: The path to the .obj or .stl file - :param color: The color which should be used for the material tag - :param cach_dir The absolute file path to the cach directory in the pycram package - :return: The absolute path of the created file - """ - urdf_template = ' \n \ - \n \ - \n \ - \n \ - \n \ - \n \ - \n \ - \n \ - \n \ - \n \ - \n \ - \n \ - \n \ - \n \ - \n \ - \n \ - \n \ - ' - urdf_template = fix_missing_inertial(urdf_template) - rgb = " ".join(list(map(str, color))) - pathlib_obj = pathlib.Path(path) - path = str(pathlib_obj.resolve()) - content = urdf_template.replace("~a", name).replace("~b", path).replace("~c", rgb) - with open(cach_dir + pathlib_obj.stem + ".urdf", "w", encoding="utf-8") as file: - file.write(content) - return cach_dir + pathlib_obj.stem + ".urdf" - - -def _world_and_id(world: BulletWorld) -> Tuple[BulletWorld, int]: - """ - Selects the world to be used. If the given world is None the 'current_bullet_world' is used. - - :param world: The world which should be used or None if 'current_bullet_world' should be used - :return: The BulletWorld object and the id of this BulletWorld - """ - world = world if world is not None else BulletWorld.current_bullet_world - id = world.client_id if world is not None else BulletWorld.current_bullet_world.client_id - return world, id diff --git a/src/pycram/bullet_world_reasoning.py b/src/pycram/bullet_world_reasoning.py deleted file mode 100644 index 9a6c0ee94..000000000 --- a/src/pycram/bullet_world_reasoning.py +++ /dev/null @@ -1,364 +0,0 @@ -import pybullet as p -import itertools -import numpy as np -import rospy - -from .bullet_world import _world_and_id, Object, Use_shadow_world, BulletWorld -from .external_interfaces.ik import request_ik -from .local_transformer import LocalTransformer -from .plan_failures import IKError -from .robot_descriptions import robot_description -from .helper import _transform_to_torso, _apply_ik, calculate_wrist_tool_offset, inverseTimes -from .pose import Pose, Transform -from typing import List, Tuple, Optional, Union, Dict - - -class ReasoningError(Exception): - def __init__(self, *args, **kwargs): - Exception.__init__(self, *args, **kwargs) - - -class CollisionError(Exception): - def __init__(self, *args, **kwargs): - Exception.__init__(self, *args, **kwargs) - - -def _get_joint_names(robot: Object, tip_link: str) -> List[str]: - res = [] - for i in range(p.getNumJoints(robot.id)): - info = p.getJointInfo(robot.id, i) - if info[2] != p.JOINT_FIXED: - res.append(info[1]) - return res - - -def _get_images_for_target(target_pose: Pose, - cam_pose: Pose, - world: Optional[BulletWorld] = None, - size: Optional[int] = 256) -> List[np.ndarray]: - """ - Calculates the view and projection Matrix and returns 3 images: - - 1. An RGB image - 2. A depth image - 3. A segmentation Mask, the segmentation mask indicates for every pixel the visible Object. - - From the given target_pose and cam_pose only the position is used. - - :param cam_pose: The pose of the camera - :param target_pose: The pose to which the camera should point to - :param size: The height and width of the images in pixel - :return: A list containing an RGB and depth image as well as a segmentation mask, in this order. - """ - world, world_id = _world_and_id(world) - # TODO: Might depend on robot cameras, if so please add these camera parameters to RobotDescription object - # TODO: of your robot with a CameraDescription object. - fov = 90 - aspect = size / size - near = 0.2 - far = 100 - - view_matrix = p.computeViewMatrix(cam_pose.position_as_list(), target_pose.position_as_list(), [0, 0, 1]) - projection_matrix = p.computeProjectionMatrixFOV(fov, aspect, near, far) - return list(p.getCameraImage(size, size, view_matrix, projection_matrix, physicsClientId=world_id))[2:5] - - -def _get_joint_ranges(robot: Object) -> Tuple[List, List, List, List, List]: - """ - Calculates the lower and upper limits, the joint ranges and the joint damping. For a given robot Object. - Fixed joints will be skipped because they don't have limits or ranges. - - :param robot: The robot for whom the values should be calculated - :return: The lists for the upper and lower limits, joint ranges, rest poses and joint damping - """ - ll, ul, jr, rp, jd = [], [], [], [], [] - - for i in range(0, p.getNumJoints(robot.id)): - info = p.getJointInfo(robot.id, i) - if info[3] > -1: - ll.append(info[8]) - ul.append(info[9]) - jr.append(info[9] - info[8]) - rp.append(p.getJointState(robot.id, i)[0]) - jd.append(info[6]) - - return ll, ul, jr, rp, jd - - -def stable(object: Object, - world: Optional[BulletWorld] = None) -> bool: - """ - Checks if an object is stable in the world. Stable meaning that it's position will not change after simulating physics - in the BulletWorld. This will be done by simulating the world for 10 seconds and compare the previous coordinates - with the coordinates after the simulation. - - :param object: The object which should be checked - :param world: The BulletWorld if more than one BulletWorld is active - :return: True if the given object is stable in the world False else - """ - world, world_id = _world_and_id(world) - shadow_obj = BulletWorld.current_bullet_world.get_shadow_object(object) - with Use_shadow_world(): - coords_prev = shadow_obj.pose.position_as_list() - state = p.saveState(physicsClientId=BulletWorld.current_bullet_world.client_id) - p.setGravity(0, 0, -9.8, BulletWorld.current_bullet_world.client_id) - - # one Step is approximately 1/240 seconds - BulletWorld.current_bullet_world.simulate(2) - # coords_past = p.getBasePositionAndOrientation(object.id, physicsClientId=world_id)[0] - coords_past = shadow_obj.pose.position_as_list() - - # p.restoreState(state, physicsClientId=BulletWorld.current_bullet_world.client_id) - coords_prev = list(map(lambda n: round(n, 3), coords_prev)) - coords_past = list(map(lambda n: round(n, 3), coords_past)) - return coords_past == coords_prev - - -def contact(object1: Object, - object2: Object, - return_links: bool = False) -> Union[bool, Tuple[bool, List]]: - """ - Checks if two objects are in contact or not. If the links should be returned then the output will also contain a - list of tuples where the first element is the link name of 'object1' and the second element is the link name of - 'object2'. - - :param object1: The first object - :param object2: The second object - :param return_links: If the respective links on the objects that are in contact should be returned. - :return: True if the two objects are in contact False else. If links should be returned a list of links in contact - """ - - with Use_shadow_world(): - shadow_obj1 = BulletWorld.current_bullet_world.get_shadow_object(object1) - shadow_obj2 = BulletWorld.current_bullet_world.get_shadow_object(object2) - p.performCollisionDetection(BulletWorld.current_bullet_world.client_id) - con_points = p.getContactPoints(shadow_obj1.id, shadow_obj2.id, - physicsClientId=BulletWorld.current_bullet_world.client_id) - - if return_links: - contact_links = [] - for point in con_points: - contact_links.append((shadow_obj1.get_link_by_id(point[3]), shadow_obj2.get_link_by_id(point[4]))) - return con_points != (), contact_links - - else: - return con_points != () - - -def visible(object: Object, - camera_pose: Pose, - front_facing_axis: Optional[List[float]] = None, - threshold: float = 0.8, - world: Optional[BulletWorld] = None) -> bool: - """ - Checks if an object is visible from a given position. This will be achieved by rendering the object - alone and counting the visible pixel, then rendering the complete scene and compare the visible pixels with the - absolut count of pixels. - - :param object: The object for which the visibility should be checked - :param camera_pose: The pose of the camera in map frame - :param front_facing_axis: The axis, of the camera frame, which faces to the front of the robot. Given as list of xyz - :param threshold: The minimum percentage of the object that needs to be visible for this method to return true - :param world: The BulletWorld if more than one BulletWorld is active - :return: True if the object is visible from the camera_position False if not - """ - front_facing_axis = robot_description.front_facing_axis if not front_facing_axis else front_facing_axis - with Use_shadow_world(): - shadow_obj = BulletWorld.current_bullet_world.get_shadow_object(object) - if BulletWorld.robot: - shadow_robot = BulletWorld.current_bullet_world.get_shadow_object(BulletWorld.robot) - state = p.saveState(physicsClientId=BulletWorld.current_bullet_world.client_id) - for obj in BulletWorld.current_bullet_world.objects: - if obj == shadow_obj or BulletWorld.robot and obj == shadow_robot: - continue - else: - obj.set_pose(Pose([100, 100, 0], [0, 0, 0, 1])) - - world_to_cam = camera_pose.to_transform("camera") - cam_to_point = Transform(list(np.multiply(front_facing_axis, 2)), [0, 0, 0, 1], "camera", "point") - target_point = (world_to_cam * cam_to_point).to_pose() - # target_point = p.multiplyTransforms(world_to_cam.translation_as_list(), world_to_cam.rotation_as_list(), cam_to_point.translation_as_list(), [0, 0, 0, 1]) - # print(target_point) - - seg_mask = _get_images_for_target(target_point, world_to_cam.to_pose(), BulletWorld.current_bullet_world)[2] - flat_list = list(itertools.chain.from_iterable(seg_mask)) - max_pixel = sum(list(map(lambda x: 1 if x == shadow_obj.id else 0, flat_list))) - p.restoreState(state, physicsClientId=BulletWorld.current_bullet_world.client_id) - if max_pixel == 0: - # Object is not visible - return False - - seg_mask = _get_images_for_target(target_point, world_to_cam.to_pose(), BulletWorld.current_bullet_world)[2] - flat_list = list(itertools.chain.from_iterable(seg_mask)) - real_pixel = sum(list(map(lambda x: 1 if x == shadow_obj.id else 0, flat_list))) - - return real_pixel / max_pixel > threshold > 0 - - -def occluding(object: Object, - camera_pose: Pose, - front_facing_axis: Optional[List[float]] = None, - world: Optional[BulletWorld] = None) -> List[Object]: - """ - Lists all objects which are occluding the given object. This works similar to 'visible'. - First the object alone will be rendered and the position of the pixels of the object in the picture will be saved. - After that the complete scene will be rendered and the previous saved pixel positions will be compared to the - actual pixels, if in one pixel another object is visible ot will be saved as occluding. - - :param object: The object for which occlusion should be checked - :param camera_pose: The pose of the camera in world coordinate frame - :param front_facing_axis: The axis, of the camera frame, which faces to the front of the robot. Given as list of xyz - :param world: The BulletWorld if more than one BulletWorld is active - :return: A list of occluding objects - """ - front_facing_axis = robot_description.front_facing_axis if not front_facing_axis else front_facing_axis - world, world_id = _world_and_id(world) - # occ_world = world.copy() - # state = p.saveState(physicsClientId=occ_world.client_id) - with Use_shadow_world(): - state = p.saveState(physicsClientId=BulletWorld.current_bullet_world.client_id) - for obj in BulletWorld.current_bullet_world.objects: - if obj.name == BulletWorld.robot.name: - continue - elif object.get_pose() == obj.get_pose(): - object = obj - else: - obj.set_pose(Pose([100, 100, 0], [0, 0, 0, 1])) - - world_to_cam = camera_pose.to_transform("camera") - cam_to_point = Transform(list(np.multiply(front_facing_axis, 2)), [0, 0, 0, 1], "camera", "point") - target_point = (world_to_cam * cam_to_point).to_pose() - - seg_mask = _get_images_for_target(target_point, world_to_cam.to_pose(), BulletWorld.current_bullet_world)[2] - - # All indices where the object that could be occluded is in the image - # [0] at the end is to reduce by one dimension because dstack adds an unnecessary dimension - pix = np.dstack((seg_mask == object.id).nonzero())[0] - - p.restoreState(state, physicsClientId=BulletWorld.current_bullet_world.client_id) - - occluding = [] - seg_mask = _get_images_for_target(target_point, world_to_cam.to_pose(), BulletWorld.current_bullet_world)[2] - for c in pix: - if not seg_mask[c[0]][c[1]] == object.id: - occluding.append(seg_mask[c[0]][c[1]]) - - occ_objects = list(set(map(BulletWorld.current_bullet_world.get_object_by_id, occluding))) - occ_objects = list(map(world.get_bullet_object_for_shadow, occ_objects)) - - return occ_objects - - -def reachable(pose: Union[Object, Pose], - robot: Object, - gripper_name: str, - threshold: float = 0.01) -> bool: - """ - Checks if the robot can reach a given position. To determine this the inverse kinematics are - calculated and applied. Afterward the distance between the position and the given end effector is calculated, if - it is smaller than the threshold the reasoning query returns True, if not it returns False. - - :param pose: The position and rotation or Object for which reachability should be checked or an Object - :param robot: The robot that should reach for the position - :param gripper_name: The name of the end effector - :param threshold: The threshold between the end effector and the position. - :return: True if the end effector is closer than the threshold to the target position, False in every other case - """ - if type(pose) == Object: - pose = pose.get_pose() - - shadow_robot = BulletWorld.current_bullet_world.get_shadow_object(robot) - with Use_shadow_world(): - arm = "left" if gripper_name == robot_description.get_tool_frame("left") else "right" - joints = robot_description.chains[arm].joints - try: - inv = request_ik(pose, shadow_robot, joints, gripper_name) - except IKError as e: - return False - - _apply_ik(shadow_robot, inv, joints) - - diff = pose.dist(shadow_robot.get_link_pose(gripper_name)) - - return diff < threshold - - -def blocking(pose_or_object: Union[Object, Pose], - robot: Object, - gripper_name: str, - grasp: str = None) -> Union[List[Object], None]: - """ - Checks if any objects are blocking another object when a robot tries to pick it. This works - similar to the reachable predicate. First the inverse kinematics between the robot and the object will be calculated - and applied. Then it will be checked if the robot is in contact with any object except the given one. If the given - pose or Object is not reachable None will be returned - - :param pose_or_object: The object or pose for which blocking objects should be found - :param robot: The robot Object who reaches for the object - :param gripper_name: The name of the end effector of the robot - :param grasp: The grasp type with which the object should be grasped - :return: A list of objects the robot is in collision with when reaching for the specified object or None if the pose - or object is not reachable. - """ - if type(pose_or_object) == Object: - input_pose = pose_or_object.get_pose() - else: - input_pose = pose_or_object - - shadow_robot = BulletWorld.current_bullet_world.get_shadow_object(robot) - with Use_shadow_world(): - arm = "left" if gripper_name == robot_description.get_tool_frame("left") else "right" - joints = robot_description.chains[arm].joints - local_transformer = LocalTransformer() - - target_map = local_transformer.transform_pose(input_pose, "map") - if grasp: - grasp_orientation = robot_description.grasps.get_orientation_for_grasp(grasp) - target_map.orientation.x = grasp_orientation[0] - target_map.orientation.y = grasp_orientation[1] - target_map.orientation.z = grasp_orientation[2] - target_map.orientation.w = grasp_orientation[3] - - try: - inv = request_ik(target_map, robot, joints, gripper_name) - except IKError as e: - rospy.logerr(f"Pose is not reachable: {e}") - return None - _apply_ik(shadow_robot, inv, joints) - - block = [] - for obj in BulletWorld.current_bullet_world.objects: - if contact(shadow_robot, obj): - block.append(BulletWorld.current_bullet_world.get_bullet_object_for_shadow(obj)) - return block - - -def supporting(object1: Object, - object2: Object) -> bool: - """ - Checks if one object is supporting another object. An object supports another object if they are in - contact and the second object is above the first one. (e.g. a Bottle will be supported by a table) - - :param object1: Object that is supported - :param object2: Object that supports the first object - :return: True if the second object is in contact with the first one and the second one ist above the first False else - """ - return contact(object1, object2) and object2.get_position().z > object1.get_position().z - - -def link_pose_for_joint_config(object: Object, joint_config: Dict[str, float], link_name: str) -> Pose: - """ - Returns the pose a link would be in if the given joint configuration would be applied to the object. This is done - by using the respective object in the shadow world and applying the joint configuration to this one. After applying - the joint configuration the link position is taken from there. - - :param object: Object of which the link is a part - :param joint_config: Dict with the goal joint configuration - :param link_name: Name of the link for which the pose should be returned - :return: The pose of the link after applying the joint configuration - """ - shadow_object = BulletWorld.current_bullet_world.get_shadow_object(object) - with Use_shadow_world(): - for joint, pose in joint_config.items(): - shadow_object.set_joint_state(joint, pose) - return shadow_object.get_link_pose(link_name) diff --git a/src/pycram/cache_manager.py b/src/pycram/cache_manager.py new file mode 100644 index 000000000..29191db9e --- /dev/null +++ b/src/pycram/cache_manager.py @@ -0,0 +1,138 @@ +import os +import pathlib + +from typing_extensions import List, TYPE_CHECKING + +if TYPE_CHECKING: + from .description import ObjectDescription + + +class CacheManager: + + """ + The CacheManager is responsible for caching object description files and managing the cache directory. + """ + + mesh_extensions: List[str] = [".obj", ".stl"] + """ + The file extensions of mesh files. + """ + + def __init__(self, cache_dir: str, data_directory: List[str]): + """ + Initializes the CacheManager. + + :param cache_dir: The directory where the cached files are stored. + :param data_directory: The directory where all resource files are stored. + """ + self.cache_dir = cache_dir + self.data_directory = data_directory + + def update_cache_dir_with_object(self, path: str, ignore_cached_files: bool, + object_description: 'ObjectDescription', object_name: str) -> str: + """ + Checks if the file is already in the cache directory, if not it will be preprocessed and saved in the cache. + + :param path: The path of the file to preprocess and save in the cache directory. + :param ignore_cached_files: If True, the file will be preprocessed and saved in the cache directory even if it + is already cached. + :param object_description: The object description of the file. + :param object_name: The name of the object. + """ + path_object = pathlib.Path(path) + extension = path_object.suffix + + self.create_cache_dir_if_not_exists() + + # save correct path in case the file is already in the cache directory + cache_path = self.cache_dir + object_description.get_file_name(path_object, extension, object_name) + + if not self.is_cached(path, object_description) or ignore_cached_files: + # if file is not yet cached preprocess the description file and save it in the cache directory. + path = self.look_for_file_in_data_dir(path_object) + self.generate_description_and_write_to_cache(path, object_name, extension, cache_path, object_description) + + return cache_path + + def generate_description_and_write_to_cache(self, path: str, name: str, extension: str, cache_path: str, + object_description: 'ObjectDescription') -> None: + """ + Generates the description from the file at the given path and writes it to the cache directory. + + :param path: The path of the file to preprocess. + :param name: The name of the object. + :param extension: The file extension of the file to preprocess. + :param cache_path: The path of the file in the cache directory. + :param object_description: The object description of the file. + """ + description_string = object_description.generate_description_from_file(path, name, extension) + self.write_to_cache(description_string, cache_path) + + @staticmethod + def write_to_cache(description_string: str, cache_path: str) -> None: + """ + Writes the description string to the cache directory. + + :param description_string: The description string to write to the cache directory. + :param cache_path: The path of the file in the cache directory. + """ + with open(cache_path, "w") as file: + file.write(description_string) + + def look_for_file_in_data_dir(self, path_object: pathlib.Path) -> str: + """ + Looks for a file in the data directory of the World. If the file is not found in the data directory, this method + raises a FileNotFoundError. + + :param path_object: The pathlib object of the file to look for. + """ + + name = path_object.name + for data_dir in self.data_directory: + for file in os.listdir(data_dir): + if file == name: + return data_dir + f"/{name}" + + raise FileNotFoundError( + f"File {name} could not be found in the resource directory {self.data_directory}") + + def create_cache_dir_if_not_exists(self): + """ + Creates the cache directory if it does not exist. + """ + if not pathlib.Path(self.cache_dir).exists(): + os.mkdir(self.cache_dir) + + def is_cached(self, path: str, object_description: 'ObjectDescription') -> bool: + """ + Checks if the file in the given path is already cached or if + there is already a cached file with the given name, this is the case if a .stl, .obj file or a description from + the parameter server is used. + + :param path: The path of the file to check. + :param object_description: The object description of the file. + :return: True if there already exists a cached file, False in any other case. + """ + return True if self.check_with_extension(path) else self.check_without_extension(path, object_description) + + def check_with_extension(self, path: str) -> bool: + """ + Checks if the file in the given ath exists in the cache directory including file extension. + + :param path: The path of the file to check. + """ + file_name = pathlib.Path(path).name + full_path = pathlib.Path(self.cache_dir + file_name) + return full_path.exists() + + def check_without_extension(self, path: str, object_description: 'ObjectDescription') -> bool: + """ + Checks if the file in the given path exists in the cache directory without file extension, + the extension is added after the file name manually in this case. + + :param path: The path of the file to check. + :param object_description: The object description of the file. + """ + file_stem = pathlib.Path(path).stem + full_path = pathlib.Path(self.cache_dir + file_stem + object_description.get_file_extension()) + return full_path.exists() diff --git a/src/pycram/costmaps.py b/src/pycram/costmaps.py index 5aee3d24a..07a061146 100644 --- a/src/pycram/costmaps.py +++ b/src/pycram/costmaps.py @@ -1,42 +1,76 @@ # used for delayed evaluation of typing until python 3.11 becomes mainstream from __future__ import annotations +from typing_extensions import Tuple, List, Optional + +import matplotlib.pyplot as plt +from dataclasses import dataclass + import numpy as np -import pybullet as p +import psutil import rospy -import matplotlib.pyplot as plt from matplotlib import colors -import psutil -import time -from .bullet_world import BulletWorld, Use_shadow_world, Object -from .bullet_world_reasoning import _get_images_for_target from nav_msgs.msg import OccupancyGrid, MapMetaData -from typing import Tuple, List, Union, Optional +from .world import UseProspectionWorld +from .world_concepts.world_object import Object +from .description import Link from .local_transformer import LocalTransformer -from .pose import Pose +from .datastructures.pose import Pose, Transform +from .world import World +from .datastructures.dataclasses import AxisAlignedBoundingBox, BoxVisualShape, Color + + +@dataclass +class Rectangle: + """ + A rectangle that is described by a lower and upper x and y value. + """ + x_lower: float + x_upper: float + y_lower: float + y_upper: float + + def translate(self, x: float, y: float): + """Translate the rectangle by x and y""" + self.x_lower += x + self.x_upper += x + self.y_lower += y + self.y_upper += y + + def scale(self, x_factor: float, y_factor: float): + """Scale the rectangle by x_factor and y_factor""" + self.x_lower *= x_factor + self.x_upper *= x_factor + self.y_lower *= y_factor + self.y_upper *= y_factor class Costmap: """ The base class of all Costmaps which implements the visualization of costmaps - in the BulletWorld. + in the World. """ def __init__(self, resolution: float, height: int, width: int, origin: Pose, - map: np.ndarray): + map: np.ndarray, + world: Optional[World] = None): """ The constructor of the base class of all Costmaps. - :param resolution: The distance in metre in the real world which is represented by a single entry in the costmap. + :param resolution: The distance in metre in the real-world which is + represented by a single entry in the costmap. :param height: The height of the costmap. :param width: The width of the costmap. - :param origin: The origin of the costmap, in world coordinate frame. The origin of the costmap is located in the centre of the costmap + :param origin: The origin of the costmap, in world coordinate frame. The origin of the costmap is located in the + centre of the costmap. :param map: The costmap represents as a 2D numpy array. + :param world: The World for which the costmap should be created. """ + self.world = world if world else World.current_world self.resolution: float = resolution self.size: int = height self.height: int = height @@ -48,18 +82,14 @@ def __init__(self, resolution: float, def visualize(self) -> None: """ - Visualizes a costmap in the BulletWorld, the visualisation works by - subdividing the costmap in rectangles which are then visualized as pybullet - visual shapes. + Visualizes a costmap in the World, the visualisation works by + subdividing the costmap in rectangles which are then visualized as world visual shapes. """ - if self.vis_ids != []: + if self.vis_ids: return # working on a copy of the costmap, since found rectangles are deleted map = np.copy(self.map) - curr_width = 0 - curr_height = 0 - curr_pose = [] boxes = [] # Finding all rectangles in the costmap for i in range(0, map.shape[0]): @@ -73,44 +103,26 @@ def visualize(self) -> None: map[i:i + curr_height, j:j + curr_width] = 0 cells = [] # Creation of the visual shapes, for documentation of the visual shapes - # please look here: https://docs.google.com/document/d/10sXEhzFRSnvFcl3XxNGhnD4N2SedqwdAvK3dsihxVUA/edit#heading=h.q1gn7v6o58bf + # please look here: + # https://docs.google.com/document/d/10sXEhzFRSnvFcl3XxNGhnD4N2SedqwdAvK3dsihxVUA/edit#heading=h.q1gn7v6o58bf for box in boxes: - visual = p.createVisualShape(p.GEOM_BOX, - halfExtents=[(box[1] * self.resolution) / 2, (box[2] * self.resolution) / 2, - 0.001], - rgbaColor=[1, 0, 0, 0.6], - visualFramePosition=[(box[0][0] + box[1] / 2) * self.resolution, - (box[0][1] + box[2] / 2) * self.resolution, 0.]) + visual_shape = BoxVisualShape(Color(1, 0, 0, 0.6), + visual_frame_position=[(box[0][0] + box[1] / 2) * self.resolution, + (box[0][1] + box[2] / 2) * self.resolution, 0.], + half_extents=[(box[1] * self.resolution) / 2, + (box[2] * self.resolution) / 2, 0.001]) + visual = self.world.create_visual_shape(visual_shape) cells.append(visual) + # Set to 127 for since this is the maximal amount of links in a multibody for cell_parts in self._chunks(cells, 127): - # Dummy paramater since these are needed to spawn visual shapes as a - # multibody. - link_poses = [[0, 0, 0] for c in cell_parts] - link_orientations = [[0, 0, 0, 1] for c in cell_parts] - link_masses = [1.0 for c in cell_parts] - link_parent = [0 for c in cell_parts] - link_joints = [p.JOINT_FIXED for c in cell_parts] - link_collision = [-1 for c in cell_parts] - link_joint_axis = [[1, 0, 0] for c in cell_parts] - # The position at which the multibody will be spawned. Offset such that - # the origin referes to the centre of the costmap. - # origin_pose = self.origin.position_as_list() - # base_pose = [origin_pose[0] - self.height / 2 * self.resolution, - # origin_pose[1] - self.width / 2 * self.resolution, origin_pose[2]] - - offset = [[-self.height / 2 * self.resolution, -self.width / 2 * self.resolution, 0.05], [0, 0, 0, 1]] - new_pose = p.multiplyTransforms(self.origin.position_as_list(), self.origin.orientation_as_list(), - offset[0], offset[1]) - - map_obj = p.createMultiBody(baseVisualShapeIndex=-1, linkVisualShapeIndices=cell_parts, - basePosition=new_pose[0], baseOrientation=new_pose[1], linkPositions=link_poses, - # [0, 0, 1, 0] - linkMasses=link_masses, linkOrientations=link_orientations, - linkInertialFramePositions=link_poses, - linkInertialFrameOrientations=link_orientations, linkParentIndices=link_parent, - linkJointTypes=link_joints, linkJointAxis=link_joint_axis, - linkCollisionShapeIndices=link_collision) + offset = Transform([-self.height / 2 * self.resolution, -self.width / 2 * self.resolution, 0.05], + [0, 0, 0, 1]) + origin = Transform(self.origin.position_as_list(), self.origin.orientation_as_list()) + new_transform = origin * offset + new_pose = new_transform.to_pose().to_list() + + map_obj = self.world.create_multi_body_from_visual_shapes(cell_parts, Pose(*new_pose)) self.vis_ids.append(map_obj) def _chunks(self, lst: List, n: int) -> List: @@ -126,10 +138,10 @@ def _chunks(self, lst: List, n: int) -> List: def close_visualization(self) -> None: """ - Removes the visualization from the BulletWorld. + Removes the visualization from the World. """ - for id in self.vis_ids: - p.removeBody(id) + for v_id in self.vis_ids: + self.world.remove_object(self.world.get_object_by_id(v_id)) self.vis_ids = [] def _find_consectuive_line(self, start: Tuple[int, int], map: np.ndarray) -> int: @@ -150,7 +162,7 @@ def _find_consectuive_line(self, start: Tuple[int, int], map: np.ndarray) -> int return lenght return lenght - def _find_max_box_height(self, start: Tuple[int, int], lenght: int, map: np.ndarray) -> int: + def _find_max_box_height(self, start: Tuple[int, int], length: int, map: np.ndarray) -> int: """ Finds the maximal height for a rectangle with a given width in a costmap. The method traverses one row at a time and checks if all entries for the @@ -165,7 +177,7 @@ def _find_max_box_height(self, start: Tuple[int, int], lenght: int, map: np.ndar height, width = map.shape curr_height = 1 for i in range(start[0], height): - for j in range(start[1], start[1] + lenght): + for j in range(start[1], start[1] + length): if map[i][j] <= 0: return curr_height curr_height += 1 @@ -213,6 +225,44 @@ def __add__(self, other: Costmap) -> Costmap: else: raise ValueError(f"Can only combine two costmaps other type was {type(other)}") + def partitioning_rectangles(self) -> List[Rectangle]: + """ + Partition the map attached to this costmap into rectangles. The rectangles are axis aligned, exhaustive and + disjoint sets. + + :return: A list containing the partitioning rectangles + """ + ocm_map = np.copy(self.map) + origin = np.array([self.height / 2, self.width / 2]) * -1 + rectangles = [] + + # for every index pair (i, j) in the occupancy costmap + for i in range(0, self.map.shape[0]): + for j in range(0, self.map.shape[1]): + + # if this index has not been used yet + if ocm_map[i][j] > 0: + curr_width = self._find_consectuive_line((i, j), ocm_map) + curr_pose = (i, j) + curr_height = self._find_max_box_height((i, j), curr_width, ocm_map) + + # calculate the rectangle in the costmap + x_lower = curr_pose[0] + x_upper = curr_pose[0] + curr_height + y_lower = curr_pose[1] + y_upper = curr_pose[1] + curr_width + + # mark the found rectangle as occupied + ocm_map[i:i + curr_height, j:j + curr_width] = 0 + + # transform rectangle to map space + rectangle = Rectangle(x_lower, x_upper, y_lower, y_upper) + rectangle.translate(*origin) + rectangle.scale(self.resolution, self.resolution) + rectangles.append(rectangle) + + return rectangles + class OccupancyCostmap(Costmap): """ @@ -224,7 +274,8 @@ def __init__(self, distance_to_obstacle: float, from_ros: Optional[bool] = False, size: Optional[int] = 100, resolution: Optional[float] = 0.02, - origin: Optional[Pose] = None): + origin: Optional[Pose] = None, + world: Optional[World] = None): """ Constructor for the Occupancy costmap, the actual costmap is received from the ROS map_server and wrapped by this class. Meta-data about the @@ -234,9 +285,9 @@ def __init__(self, distance_to_obstacle: float, inflated. Meaning that obstacles in the costmap are growing bigger by this distance. :param from_ros: This determines if the Occupancy map should be created - from the map provided by the ROS map_server or from the BulletWorld. + from the map provided by the ROS map_server or from the World. If True then the map from the ROS map_server will be used otherwise - the Occupancy map will be created from the BulletWorld. + the Occupancy map will be created from the World. :param size: The length of the side of the costmap. The costmap will be created as a square. This will only be used if from_ros is False. :param resolution: The resolution of this costmap. This determines how much @@ -246,6 +297,7 @@ def __init__(self, distance_to_obstacle: float, be in the middle of the costmap. This parameter is only used if from_ros is False. """ + self.world = world if world else World.current_world if from_ros: meta = self._get_map_metadata() self.original_map = np.reshape(self._get_map(), (meta.height, meta.width)) @@ -263,7 +315,7 @@ def __init__(self, distance_to_obstacle: float, self.origin = Pose() if not origin else origin self.resolution = resolution self.distance_obstacle = max(int(distance_to_obstacle / self.resolution), 1) - self.map = self._create_from_bullet(size, resolution) + self.map = self._create_from_world(size, resolution) Costmap.__init__(self, resolution, size, size, self.origin, self.map) def _calculate_diff_origin(self, height: int, width: int) -> Pose: @@ -280,7 +332,7 @@ def _calculate_diff_origin(self, height: int, width: int) -> Pose: """ actual_origin = [int(height / 2) * self.resolution, int(width / 2) * self.resolution, 0] origin = np.array(self.meta_origin) + np.array(actual_origin) - return Pose(origin) + return Pose(origin.tolist()) @staticmethod def _get_map() -> np.ndarray: @@ -358,9 +410,9 @@ def create_sub_map(self, sub_origin: Pose, size: int) -> Costmap: sub_map = np.rot90(np.flip(self._convert_map(sub_map), 0)) return Costmap(self.resolution, size, size, Pose(list(sub_origin * -1)), sub_map) - def _create_from_bullet(self, size: int, resolution: float) -> np.ndarray: + def _create_from_world(self, size: int, resolution: float) -> np.ndarray: """ - Creates an Occupancy Costmap for the specified BulletWorld. + Creates an Occupancy Costmap for the specified World. This map marks every position as valid that has no object above it. After creating the costmap the distance to obstacle parameter is applied. @@ -379,23 +431,22 @@ def _create_from_bullet(self, size: int, resolution: float) -> np.ndarray: rays = np.dstack(np.dstack((indices_0, indices_10))).T res = np.zeros(len(rays)) - # Using the PyBullet rayTest to check if there is an object above the position + # Using the World rayTest to check if there is an object above the position # if there is no object the position is marked as valid # 16383 is the maximal number of rays that can be processed in a batch i = 0 j = 0 for n in self._chunks(np.array(rays), 16380): - with Use_shadow_world(): - r_t = p.rayTestBatch(n[:, 0], n[:, 1], numThreads=0, - physicsClientId=BulletWorld.current_bullet_world.client_id) + with UseProspectionWorld(): + r_t = self.world.ray_test_batch(n[:, 0], n[:, 1], num_threads=0) while r_t is None: - r_t = p.rayTestBatch(n[:, 0], n[:, 1], numThreads=0, - physicsClientId=BulletWorld.current_bullet_world.client_id) + r_t = self.world.ray_test_batch(n[:, 0], n[:, 1], num_threads=0) j += len(n) - if BulletWorld.robot: - shadow_robot = BulletWorld.current_bullet_world.get_shadow_object(BulletWorld.robot) - attached_objs = BulletWorld.robot.attachments.keys() - attached_objs_shadow_id = [BulletWorld.current_bullet_world.get_shadow_object(x).id for x in + if World.robot: + shadow_robot = World.current_world.get_prospection_object_for_object(World.robot) + attached_objs = World.robot.attachments.keys() + attached_objs_shadow_id = [World.current_world.get_prospection_object_for_object(x).id for x + in attached_objs] res[i:j] = [ 1 if ray[0] == -1 or ray[0] == shadow_robot.id or ray[0] in attached_objs_shadow_id else 0 for @@ -449,7 +500,7 @@ def __init__(self, min_height: float, size: Optional[int] = 100, resolution: Optional[float] = 0.02, origin: Optional[Pose] = None, - world: Optional[BulletWorld] = None): + world: Optional[World] = None): """ Visibility Costmaps show for every position around the origin pose if the origin can be seen from this pose. The costmap is able to deal with height differences of the camera while in a single position, for example, if @@ -465,12 +516,12 @@ def __init__(self, min_height: float, costmap represents. :param origin: The pose in world coordinate frame around which the costmap should be created. - :param world: The BulletWorld for which the costmap should be created. + :param world: The World for which the costmap should be created. """ if (11 * size ** 2 + size ** 3) * 2 > psutil.virtual_memory().available: raise OSError("Not enough free RAM to calculate a costmap of this size") - self.world = world if world else BulletWorld.current_bullet_world + self.world = world if world else World.current_world self.map = np.zeros((size, size)) self.size = size self.resolution = resolution @@ -494,26 +545,23 @@ def _create_images(self) -> List[np.ndarray]: images = [] camera_pose = self.origin - with Use_shadow_world(): + with UseProspectionWorld(): origin_copy = self.origin.copy() origin_copy.position.y += 1 images.append( - _get_images_for_target(origin_copy, camera_pose, BulletWorld.current_bullet_world, size=self.size)[1]) + self.world.get_images_for_target(origin_copy, camera_pose, size=self.size)[1]) origin_copy = self.origin.copy() origin_copy.position.x -= 1 - images.append( - _get_images_for_target(origin_copy, camera_pose, BulletWorld.current_bullet_world, size=self.size)[1]) + images.append(self.world.get_images_for_target(origin_copy, camera_pose, size=self.size)[1]) origin_copy = self.origin.copy() origin_copy.position.y -= 1 - images.append( - _get_images_for_target(origin_copy, camera_pose, BulletWorld.current_bullet_world, size=self.size)[1]) + images.append(self.world.get_images_for_target(origin_copy, camera_pose, size=self.size)[1]) origin_copy = self.origin.copy() origin_copy.position.x += 1 - images.append( - _get_images_for_target(origin_copy, camera_pose, BulletWorld.current_bullet_world, size=self.size)[1]) + images.append(self.world.get_images_for_target(origin_copy, camera_pose, size=self.size)[1]) for i in range(0, 4): images[i] = self._depth_buffer_to_meter(images[i]) @@ -521,7 +569,7 @@ def _create_images(self) -> List[np.ndarray]: def _depth_buffer_to_meter(self, buffer: np.ndarray) -> np.ndarray: """ - Converts the depth images generated by PyBullet to represent + Converts the depth images generated by the World to represent each position in metre. :return: The depth image in metre @@ -586,7 +634,7 @@ def _generate_map(self): depth_indices[int(self.size / 2), int(self.size / 2), 1] = 1 # Calculate columns for the respective position in the costmap - columns = np.around(((depth_indices[:, :, :1] / depth_indices[:, :, 1:2]) \ + columns = np.around(((depth_indices[:, :, :1] / depth_indices[:, :, 1:2]) * (self.size / 2)) + self.size / 2).reshape((self.size, self.size)).astype('int16') # An array with size * size that contains the euclidean distance to the @@ -693,11 +741,11 @@ def __init__(self, object, urdf_link_name, size=100, resolution=0.02, world=None :param object: The object of which the link is a part :param urdf_link_name: The link name, as stated in the URDF :param resolution: Resolution of the final costmap - :param world: The BulletWorld from which the costmap should be created + :param world: The World from which the costmap should be created """ - self.world: BulletWorld = world if world else BulletWorld.current_bullet_world + self.world: World = world if world else World.current_world self.object: Object = object - self.link: str = urdf_link_name + self.link: Link = object.get_link(urdf_link_name) self.resolution: float = resolution self.origin: Pose = object.get_link_pose(urdf_link_name) self.height: int = 0 @@ -712,12 +760,12 @@ def generate_map(self) -> None: Generates the semantic costmap according to the provided parameters. To do this the axis aligned bounding box (AABB) for the link name will be used. Height and width of the final Costmap will be the x and y sizes of the AABB. """ - min, max = self.get_aabb_for_link() - self.height = int((max[0] - min[0]) // self.resolution) - self.width = int((max[1] - min[1]) // self.resolution) + min_p, max_p = self.get_aabb_for_link().get_min_max_points() + self.height = int((max_p.x - min_p.x) // self.resolution) + self.width = int((max_p.y - min_p.y) // self.resolution) self.map = np.ones((self.height, self.width)) - def get_aabb_for_link(self) -> Tuple[List[float], List[float]]: + def get_aabb_for_link(self) -> AxisAlignedBoundingBox: """ Returns the axis aligned bounding box (AABB) of the link provided when creating this costmap. To try and let the AABB as close to the actual object as possible, the Object will be rotated such that the link will be in the @@ -725,14 +773,13 @@ def get_aabb_for_link(self) -> Tuple[List[float], List[float]]: :return: Two points in world coordinate space, which span a rectangle """ - shadow_obj = BulletWorld.current_bullet_world.get_shadow_object(self.object) - with Use_shadow_world(): - shadow_obj.set_orientation(Pose(orientation=[0, 0, 0, 1])) - link_orientation = shadow_obj.get_link_pose(self.link) - link_orientation_trans = link_orientation.to_transform(self.object.get_link_tf_frame(self.link)) - inverse_orientation = link_orientation_trans.invert() - shadow_obj.set_orientation(inverse_orientation.to_pose()) - return shadow_obj.get_AABB(self.link) + prospection_object = World.current_world.get_prospection_object_for_object(self.object) + with UseProspectionWorld(): + prospection_object.set_orientation(Pose(orientation=[0, 0, 0, 1])) + link_pose_trans = self.link.transform + inverse_trans = link_pose_trans.invert() + prospection_object.set_orientation(inverse_trans.to_pose()) + return self.link.get_axis_aligned_bounding_box() cmap = colors.ListedColormap(['white', 'black', 'green', 'red', 'blue']) @@ -749,7 +796,7 @@ def plot_grid(data: np.ndarray) -> None: fig, ax = plt.subplots() ax.imshow(data, cmap=cmap) # draw gridlines - # ax.grid(which='major', axis='both', linestyle='-', color='k', linewidth=1) + # ax.grid(which='major', axis='both', linestyle='-', rgba_color='k', linewidth=1) ax.set_xticks(np.arange(0.5, rows, 1)); ax.set_yticks(np.arange(0.5, cols, 1)); plt.tick_params(axis='both', labelsize=0, length=0) diff --git a/src/pycram/datastructures/__init__.py b/src/pycram/datastructures/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/src/pycram/datastructures/dataclasses.py b/src/pycram/datastructures/dataclasses.py new file mode 100644 index 000000000..d83bcd00f --- /dev/null +++ b/src/pycram/datastructures/dataclasses.py @@ -0,0 +1,298 @@ +from __future__ import annotations + +from dataclasses import dataclass +from typing_extensions import List, Optional, Tuple, Callable, Dict, Any, Union, TYPE_CHECKING +from .enums import JointType, Shape +from .pose import Pose, Point +from abc import ABC, abstractmethod + +if TYPE_CHECKING: + from ..description import Link + from ..world_concepts.world_object import Object + from ..world_concepts.constraints import Attachment + + +def get_point_as_list(point: Point) -> List[float]: + """ + Returns the point as a list. + + :param point: The point. + :return: The point as a list + """ + return [point.x, point.y, point.z] + + +@dataclass +class Color: + """ + Dataclass for storing rgba_color as an RGBA value. + The values are stored as floats between 0 and 1. + The default rgba_color is white. 'A' stands for the opacity. + """ + R: float = 1 + G: float = 1 + B: float = 1 + A: float = 1 + + @classmethod + def from_list(cls, color: List[float]): + """ + Sets the rgba_color from a list of RGBA values. + + :param color: The list of RGBA values + """ + if len(color) == 3: + return cls.from_rgb(color) + elif len(color) == 4: + return cls.from_rgba(color) + else: + raise ValueError("Color list must have 3 or 4 elements") + + @classmethod + def from_rgb(cls, rgb: List[float]): + """ + Sets the rgba_color from a list of RGB values. + + :param rgb: The list of RGB values + """ + return cls(rgb[0], rgb[1], rgb[2], 1) + + @classmethod + def from_rgba(cls, rgba: List[float]): + """ + Sets the rgba_color from a list of RGBA values. + + :param rgba: The list of RGBA values + """ + return cls(rgba[0], rgba[1], rgba[2], rgba[3]) + + def get_rgba(self) -> List[float]: + """ + Returns the rgba_color as a list of RGBA values. + + :return: The rgba_color as a list of RGBA values + """ + return [self.R, self.G, self.B, self.A] + + def get_rgb(self) -> List[float]: + """ + Returns the rgba_color as a list of RGB values. + + :return: The rgba_color as a list of RGB values + """ + return [self.R, self.G, self.B] + + +@dataclass +class AxisAlignedBoundingBox: + """ + Dataclass for storing an axis-aligned bounding box. + """ + min_x: float + min_y: float + min_z: float + max_x: float + max_y: float + max_z: float + + @classmethod + def from_min_max(cls, min_point: List[float], max_point: List[float]): + """ + Sets the axis-aligned bounding box from a minimum and maximum point. + + :param min_point: The minimum point + :param max_point: The maximum point + """ + return cls(min_point[0], min_point[1], min_point[2], max_point[0], max_point[1], max_point[2]) + + def get_min_max_points(self) -> Tuple[Point, Point]: + """ + Returns the axis-aligned bounding box as a tuple of minimum and maximum points. + + :return: The axis-aligned bounding box as a tuple of minimum and maximum points + """ + return self.get_min_point(), self.get_max_point() + + def get_min_point(self) -> Point: + """ + Returns the axis-aligned bounding box as a minimum point. + + :return: The axis-aligned bounding box as a minimum point + """ + return Point(self.min_x, self.min_y, self.min_z) + + def get_max_point(self) -> Point: + """ + Returns the axis-aligned bounding box as a maximum point. + + :return: The axis-aligned bounding box as a maximum point + """ + return Point(self.max_x, self.max_y, self.max_z) + + def get_min_max(self) -> Tuple[List[float], List[float]]: + """ + Returns the axis-aligned bounding box as a tuple of minimum and maximum points. + + :return: The axis-aligned bounding box as a tuple of minimum and maximum points + """ + return self.get_min(), self.get_max() + + def get_min(self) -> List[float]: + """ + Returns the minimum point of the axis-aligned bounding box. + + :return: The minimum point of the axis-aligned bounding box + """ + return [self.min_x, self.min_y, self.min_z] + + def get_max(self) -> List[float]: + """ + Returns the maximum point of the axis-aligned bounding box. + + :return: The maximum point of the axis-aligned bounding box + """ + return [self.max_x, self.max_y, self.max_z] + + +@dataclass +class CollisionCallbacks: + on_collision_cb: Callable + no_collision_cb: Optional[Callable] = None + + +@dataclass +class MultiBody: + base_visual_shape_index: int + base_pose: Pose + link_visual_shape_indices: List[int] + link_poses: List[Pose] + link_masses: List[float] + link_inertial_frame_poses: List[Pose] + link_parent_indices: List[int] + link_joint_types: List[JointType] + link_joint_axis: List[Point] + link_collision_shape_indices: List[int] + + +@dataclass +class VisualShape(ABC): + rgba_color: Color + visual_frame_position: List[float] + + @abstractmethod + def shape_data(self) -> Dict[str, Any]: + """ + Returns the shape data of the visual shape (e.g. half extents for a box, radius for a sphere). + """ + pass + + @property + @abstractmethod + def visual_geometry_type(self) -> Shape: + """ + Returns the visual geometry type of the visual shape (e.g. box, sphere). + """ + pass + + +@dataclass +class BoxVisualShape(VisualShape): + half_extents: List[float] + + def shape_data(self) -> Dict[str, List[float]]: + return {"halfExtents": self.half_extents} + + @property + def visual_geometry_type(self) -> Shape: + return Shape.BOX + + @property + def size(self) -> List[float]: + return self.half_extents + + +@dataclass +class SphereVisualShape(VisualShape): + radius: float + + def shape_data(self) -> Dict[str, float]: + return {"radius": self.radius} + + @property + def visual_geometry_type(self) -> Shape: + return Shape.SPHERE + + +@dataclass +class CapsuleVisualShape(VisualShape): + radius: float + length: float + + def shape_data(self) -> Dict[str, float]: + return {"radius": self.radius, "length": self.length} + + @property + def visual_geometry_type(self) -> Shape: + return Shape.CAPSULE + + +@dataclass +class CylinderVisualShape(CapsuleVisualShape): + + @property + def visual_geometry_type(self) -> Shape: + return Shape.CYLINDER + + +@dataclass +class MeshVisualShape(VisualShape): + scale: List[float] + file_name: str + + def shape_data(self) -> Dict[str, Union[List[float], str]]: + return {"meshScale": self.scale, "meshFileName": self.file_name} + + @property + def visual_geometry_type(self) -> Shape: + return Shape.MESH + + +@dataclass +class PlaneVisualShape(VisualShape): + normal: List[float] + + def shape_data(self) -> Dict[str, List[float]]: + return {"normal": self.normal} + + @property + def visual_geometry_type(self) -> Shape: + return Shape.PLANE + + +@dataclass +class State(ABC): + pass + + +@dataclass +class LinkState(State): + constraint_ids: Dict[Link, int] + + +@dataclass +class JointState(State): + position: float + + +@dataclass +class ObjectState(State): + pose: Pose + attachments: Dict[Object, Attachment] + link_states: Dict[int, LinkState] + joint_states: Dict[int, JointState] + + +@dataclass +class WorldState(State): + simulator_state_id: int + object_states: Dict[str, ObjectState] diff --git a/src/pycram/enums.py b/src/pycram/datastructures/enums.py similarity index 72% rename from src/pycram/enums.py rename to src/pycram/datastructures/enums.py index 407af2cc7..b353b5319 100644 --- a/src/pycram/enums.py +++ b/src/pycram/datastructures/enums.py @@ -29,6 +29,9 @@ class JointType(Enum): SPHERICAL = 2 PLANAR = 3 FIXED = 4 + UNKNOWN = 5 + CONTINUOUS = 6 + FLOATING = 7 class Grasp(Enum): @@ -45,6 +48,8 @@ class ObjectType(Enum): """ Enum for Object types to easier identify different objects """ + METALMUG = auto() + PRINGLES = auto() MILK = auto() SPOON = auto() BOWL = auto() @@ -53,6 +58,7 @@ class ObjectType(Enum): ROBOT = auto() ENVIRONMENT = auto() GENERIC_OBJECT = auto() + HUMAN = auto() class State(Enum): @@ -64,3 +70,22 @@ class State(Enum): RUNNING = 2 INTERRUPTED = 3 + +class Shape(Enum): + """ + Enum for visual shapes of objects + """ + SPHERE = 2 + BOX = 3 + CYLINDER = 4 + MESH = 5 + PLANE = 6 + CAPSULE = 7 + + +class WorldMode(Enum): + """ + Enum for the different modes of the world. + """ + GUI = "GUI" + DIRECT = "DIRECT" diff --git a/src/pycram/pose.py b/src/pycram/datastructures/pose.py similarity index 87% rename from src/pycram/pose.py rename to src/pycram/datastructures/pose.py index 852f20967..960a4ca19 100644 --- a/src/pycram/pose.py +++ b/src/pycram/datastructures/pose.py @@ -1,19 +1,36 @@ # used for delayed evaluation of typing until python 3.11 becomes mainstream from __future__ import annotations -import copy import math import datetime -from typing import List, Union, Optional +from typing_extensions import List, Union, Optional import numpy as np import rospy import sqlalchemy.orm -from geometry_msgs.msg import PoseStamped, TransformStamped, Vector3 +from geometry_msgs.msg import PoseStamped, TransformStamped, Vector3, Point from geometry_msgs.msg import (Pose as GeoPose, Quaternion as GeoQuaternion) -from std_msgs.msg import Header from tf import transformations -from .orm.base import Pose as ORMPose, Position, Quaternion, ProcessMetaData +from ..orm.base import Pose as ORMPose, Position, Quaternion, ProcessMetaData + + +def get_normalized_quaternion(quaternion: np.ndarray) -> GeoQuaternion: + """ + Normalizes a given quaternion such that it has a magnitude of 1. + + :param quaternion: The quaternion that should be normalized + :return: The normalized quaternion + """ + mag = math.sqrt(sum(v**2 for v in quaternion)) + normed_rotation = quaternion / mag + + geo_quaternion = GeoQuaternion() + geo_quaternion.x = normed_rotation[0] + geo_quaternion.y = normed_rotation[1] + geo_quaternion.z = normed_rotation[2] + geo_quaternion.w = normed_rotation[3] + + return geo_quaternion class Pose(PoseStamped): @@ -41,10 +58,10 @@ def __init__(self, position: Optional[List[float]] = None, orientation: Optional :param time: The time at which this Pose is valid, as ROS time """ super().__init__() - if position: + if position is not None: self.position = position - if orientation: + if orientation is not None: self.orientation = orientation else: self.pose.orientation.w = 1.0 @@ -87,7 +104,7 @@ def frame(self, value: str) -> None: self.header.frame_id = value @property - def position(self) -> GeoPose: + def position(self) -> Point: """ Property that points to the position of this pose """ @@ -100,15 +117,16 @@ def position(self, value) -> None: :param value: List or geometry_msgs/Pose message for the position """ - if not type(value) == list and not type(value) == tuple and not type(value) == GeoPose: - print(type(value)) - rospy.logwarn("Position can only be a list or geometry_msgs/Pose") - return - if type(value) == list or type(value) == tuple and len(value) == 3: + if (not isinstance(value, list) and not isinstance(value, tuple) and not isinstance(value, GeoPose) + and not isinstance(value, Point)): + rospy.logerr("Position can only be a list or geometry_msgs/Pose") + raise TypeError("Position can only be a list/tuple or geometry_msgs/Pose") + if isinstance(value, list) or isinstance(value, tuple) and len(value) == 3: self.pose.position.x = value[0] self.pose.position.y = value[1] self.pose.position.z = value[2] else: + # TODO: Check if this is correct or if it should be handled as an error self.pose.position = value @property @@ -126,22 +144,16 @@ def orientation(self, value) -> None: :param value: New orientation, either a list or geometry_msgs/Quaternion """ - if not type(value) == list and not type(value) == tuple and not type(value) == GeoQuaternion: + if not isinstance(value, list) and not isinstance(value, tuple) and not isinstance(value, GeoQuaternion): rospy.logwarn("Orientation can only be a list or geometry_msgs/Quaternion") return - if type(value) == list or type(value) == tuple and len(value) == 4: + if isinstance(value, list) or isinstance(value, tuple) and len(value) == 4: orientation = np.array(value) else: orientation = np.array([value.x, value.y, value.z, value.w]) # This is used instead of np.linalg.norm since numpy is too slow on small arrays - mag = math.sqrt(sum(v**2 for v in orientation)) - normed_orientation = orientation / mag - - self.pose.orientation.x = normed_orientation[0] - self.pose.orientation.y = normed_orientation[1] - self.pose.orientation.z = normed_orientation[2] - self.pose.orientation.w = normed_orientation[3] + self.pose.orientation = get_normalized_quaternion(orientation) def to_list(self) -> List[List[float]]: """ @@ -159,7 +171,8 @@ def to_transform(self, child_frame: str) -> Transform: :param child_frame: Child frame id to which the Transform points :return: A new Transform """ - return Transform(self.position_as_list(), self.orientation_as_list(), self.frame, child_frame, self.header.stamp) + return Transform(self.position_as_list(), self.orientation_as_list(), self.frame, child_frame, + self.header.stamp) def copy(self) -> Pose: """ @@ -169,7 +182,6 @@ def copy(self) -> Pose: """ p = Pose(self.position_as_list(), self.orientation_as_list(), self.frame, self.header.stamp) p.header.frame_id = self.header.frame_id - # p.header.stamp = self.header.stamp return p def position_as_list(self) -> List[float]: @@ -178,7 +190,7 @@ def position_as_list(self) -> List[float]: :return: The position as a list """ - return [self.pose.position.x, self.pose.position.y, self.pose.position.z] + return [self.position.x, self.position.y, self.position.z] def orientation_as_list(self) -> List[float]: """ @@ -208,7 +220,7 @@ def __eq__(self, other: Pose) -> bool: :param other: Other pose which should be compared :return: True if both Poses have the same position, orientation and frame. False otherwise """ - if not type(other) == Pose: + if not isinstance(other, Pose): return False self_position = self.position_as_list() other_position = other.position_as_list() @@ -242,20 +254,17 @@ def insert(self, session: sqlalchemy.orm.Session) -> ORMPose: metadata = ProcessMetaData().insert(session) position = Position(*self.position_as_list()) - position.process_metadata_id = metadata.id + position.process_metadata = metadata orientation = Quaternion(*self.orientation_as_list()) - orientation.process_metadata_id = metadata.id - + orientation.process_metadata = metadata session.add(position) session.add(orientation) - session.commit() - pose = self.to_sql() - pose.process_metadata_id = metadata.id - pose.position_id = position.id - pose.orientation_id = orientation.id + pose = self.to_sql() + pose.process_metadata = metadata + pose.orientation = orientation + pose.position = position session.add(pose) - session.commit() return pose @@ -301,6 +310,11 @@ def __init__(self, translation: Optional[List[float]] = None, rotation: Optional self.frame = frame + @classmethod + def from_pose_and_child_frame(cls, pose: Pose, child_frame_name: str) -> Transform: + return cls(pose.position_as_list(), pose.orientation_as_list(), pose.frame, child_frame_name, + time=pose.header.stamp) + @staticmethod def from_transform_stamped(transform_stamped: TransformStamped) -> Transform: """ @@ -350,10 +364,10 @@ def translation(self, value) -> None: :param value: The new value for the translation, either a list or geometry_msgs/Vector3 """ - if not type(value) == list and not type(value) == Vector3: + if not isinstance(value, list) and not isinstance(value, Vector3): rospy.logwarn("Value of a translation can only be a list of a geometry_msgs/Vector3") return - if type(value) == list and len(value) == 3: + if isinstance(value, list) and len(value) == 3: self.transform.translation.x = value[0] self.transform.translation.y = value[1] self.transform.translation.z = value[2] @@ -375,22 +389,16 @@ def rotation(self, value): :param value: The new value for the rotation, either a list or geometry_msgs/Quaternion """ - if not type(value) == list and not type(value) == GeoQuaternion: + if not isinstance(value, list) and not isinstance(value, GeoQuaternion): rospy.logwarn("Value of the rotation can only be a list or a geometry.msgs/Quaternion") return - if type(value) == list and len(value) == 4: + if isinstance(value, list) and len(value) == 4: rotation = np.array(value) else: rotation = np.array([value.x, value.y, value.z, value.w]) # This is used instead of np.linalg.norm since numpy is too slow on small arrays - mag = math.sqrt(sum(v**2 for v in rotation)) - normed_rotation = rotation / mag - - self.transform.rotation.x = normed_rotation[0] - self.transform.rotation.y = normed_rotation[1] - self.transform.rotation.z = normed_rotation[2] - self.transform.rotation.w = normed_rotation[3] + self.transform.rotation = get_normalized_quaternion(rotation) def copy(self) -> Transform: """ @@ -449,7 +457,7 @@ def __mul__(self, other: Transform) -> Union[Transform, None]: :param other: The Transform which should be multiplied with this one. :return: The resulting Transform from the multiplication """ - if not type(other) == Transform: + if not isinstance(other, Transform): rospy.logerr(f"Can only multiply two Transforms") return self_trans = transformations.translation_matrix(self.translation_as_list()) @@ -483,7 +491,7 @@ def __eq__(self, other: Transform) -> bool: :param other: Other pose which should be compared :return: True if both Transforms have the same translation, rotation, frame and child frame. False otherwise """ - if not type(other) == Transform: + if not isinstance(other, Transform): return False self_position = self.translation_as_list() other_position = other.translation_as_list() diff --git a/src/pycram/description.py b/src/pycram/description.py new file mode 100644 index 000000000..a4accfc15 --- /dev/null +++ b/src/pycram/description.py @@ -0,0 +1,741 @@ +from __future__ import annotations + +import logging +import pathlib +from abc import ABC, abstractmethod + +import rospy +from geometry_msgs.msg import Point, Quaternion +from typing_extensions import Tuple, Union, Any, List, Optional, Dict, TYPE_CHECKING + +from .datastructures.enums import JointType +from .local_transformer import LocalTransformer +from .datastructures.pose import Pose, Transform +from .world import WorldEntity +from .datastructures.dataclasses import JointState, AxisAlignedBoundingBox, Color, LinkState, VisualShape + +if TYPE_CHECKING: + from .world_concepts.world_object import Object + + +class EntityDescription(ABC): + + """ + A class that represents a description of an entity. This can be a link, joint or object description. + """ + + @property + @abstractmethod + def origin(self) -> Pose: + """ + Returns the origin of this entity. + """ + pass + + @property + @abstractmethod + def name(self) -> str: + """ + Returns the name of this entity. + """ + pass + + +class LinkDescription(EntityDescription): + """ + A class that represents a link description of an object. + """ + + def __init__(self, parsed_link_description: Any): + self.parsed_description = parsed_link_description + + @property + @abstractmethod + def geometry(self) -> Union[VisualShape, None]: + """ + Returns the geometry type of the collision element of this link. + """ + pass + + +class JointDescription(EntityDescription): + """ + A class that represents the description of a joint. + """ + + def __init__(self, parsed_joint_description: Any): + self.parsed_description = parsed_joint_description + + @property + @abstractmethod + def type(self) -> JointType: + """ + :return: The type of this joint. + """ + pass + + @property + @abstractmethod + def axis(self) -> Point: + """ + :return: The axis of this joint, for example the rotation axis for a revolute joint. + """ + pass + + @property + @abstractmethod + def has_limits(self) -> bool: + """ + Checks if this joint has limits. + + :return: True if the joint has limits, False otherwise. + """ + pass + + @property + def limits(self) -> Tuple[float, float]: + """ + :return: The lower and upper limits of this joint. + """ + lower, upper = self.lower_limit, self.upper_limit + if lower > upper: + lower, upper = upper, lower + return lower, upper + + @property + @abstractmethod + def lower_limit(self) -> Union[float, None]: + """ + :return: The lower limit of this joint, or None if the joint has no limits. + """ + pass + + @property + @abstractmethod + def upper_limit(self) -> Union[float, None]: + """ + :return: The upper limit of this joint, or None if the joint has no limits. + """ + pass + + @property + @abstractmethod + def parent_link_name(self) -> str: + """ + :return: The name of the parent link of this joint. + """ + pass + + @property + @abstractmethod + def child_link_name(self) -> str: + """ + :return: The name of the child link of this joint. + """ + pass + + @property + def damping(self) -> float: + """ + :return: The damping of this joint. + """ + raise NotImplementedError + + @property + def friction(self) -> float: + """ + :return: The friction of this joint. + """ + raise NotImplementedError + + +class ObjectEntity(WorldEntity): + """ + An abstract base class that represents a physical part/entity of an Object. + This can be a link or a joint of an Object. + """ + + def __init__(self, _id: int, obj: Object): + WorldEntity.__init__(self, _id, obj.world) + self.object: Object = obj + + @property + @abstractmethod + def pose(self) -> Pose: + """ + :return: The pose of this entity relative to the world frame. + """ + pass + + @property + def transform(self) -> Transform: + """ + Returns the transform of this entity. + + :return: The transform of this entity. + """ + return self.pose.to_transform(self.tf_frame) + + @property + @abstractmethod + def tf_frame(self) -> str: + """ + Returns the tf frame of this entity. + + :return: The tf frame of this entity. + """ + pass + + @property + def object_id(self) -> int: + """ + :return: the id of the object to which this entity belongs. + """ + return self.object.id + + +class Link(ObjectEntity, LinkDescription, ABC): + """ + Represents a link of an Object in the World. + """ + + def __init__(self, _id: int, link_description: LinkDescription, obj: Object): + ObjectEntity.__init__(self, _id, obj) + LinkDescription.__init__(self, link_description.parsed_description) + self.local_transformer: LocalTransformer = LocalTransformer() + self.constraint_ids: Dict[Link, int] = {} + self._update_pose() + + @property + def current_state(self) -> LinkState: + return LinkState(self.constraint_ids.copy()) + + @current_state.setter + def current_state(self, link_state: LinkState) -> None: + self.constraint_ids = link_state.constraint_ids + + def add_fixed_constraint_with_link(self, child_link: 'Link') -> int: + """ + Adds a fixed constraint between this link and the given link, used to create attachments for example. + + :param child_link: The child link to which a fixed constraint should be added. + :return: The unique id of the constraint. + """ + constraint_id = self.world.add_fixed_constraint(self, + child_link, + child_link.get_transform_from_link(self)) + self.constraint_ids[child_link] = constraint_id + child_link.constraint_ids[self] = constraint_id + return constraint_id + + def remove_constraint_with_link(self, child_link: 'Link') -> None: + """ + Removes the constraint between this link and the given link. + + :param child_link: The child link of the constraint that should be removed. + """ + self.world.remove_constraint(self.constraint_ids[child_link]) + del self.constraint_ids[child_link] + del child_link.constraint_ids[self] + + @property + def is_root(self) -> bool: + """ + Returns whether this link is the root link of the object. + + :return: True if this link is the root link, False otherwise. + """ + return self.object.get_root_link_id() == self.id + + def update_transform(self, transform_time: Optional[rospy.Time] = None) -> None: + """ + Updates the transformation of this link at the given time. + + :param transform_time: The time at which the transformation should be updated. + """ + self.local_transformer.update_transforms([self.transform], transform_time) + + def get_transform_to_link(self, link: 'Link') -> Transform: + """ + Returns the transformation from this link to the given link. + + :param link: The link to which the transformation should be returned. + :return: A Transform object with the transformation from this link to the given link. + """ + return link.get_transform_from_link(self) + + def get_transform_from_link(self, link: 'Link') -> Transform: + """ + Returns the transformation from the given link to this link. + + :param link: The link from which the transformation should be returned. + :return: A Transform object with the transformation from the given link to this link. + """ + return self.get_pose_wrt_link(link).to_transform(self.tf_frame) + + def get_pose_wrt_link(self, link: 'Link') -> Pose: + """ + Returns the pose of this link with respect to the given link. + + :param link: The link with respect to which the pose should be returned. + :return: A Pose object with the pose of this link with respect to the given link. + """ + return self.local_transformer.transform_pose(self.pose, link.tf_frame) + + def get_axis_aligned_bounding_box(self) -> AxisAlignedBoundingBox: + """ + Returns the axis aligned bounding box of this link. + + :return: An AxisAlignedBoundingBox object with the axis aligned bounding box of this link. + """ + return self.world.get_link_axis_aligned_bounding_box(self) + + @property + def position(self) -> Point: + """ + The getter for the position of the link relative to the world frame. + + :return: A Point object containing the position of the link relative to the world frame. + """ + return self.pose.position + + @property + def position_as_list(self) -> List[float]: + """ + The getter for the position of the link relative to the world frame as a list. + + :return: A list containing the position of the link relative to the world frame. + """ + return self.pose.position_as_list() + + @property + def orientation(self) -> Quaternion: + """ + The getter for the orientation of the link relative to the world frame. + + :return: A Quaternion object containing the orientation of the link relative to the world frame. + """ + return self.pose.orientation + + @property + def orientation_as_list(self) -> List[float]: + """ + The getter for the orientation of the link relative to the world frame as a list. + + :return: A list containing the orientation of the link relative to the world frame. + """ + return self.pose.orientation_as_list() + + def _update_pose(self) -> None: + """ + Updates the current pose of this link from the world. + """ + self._current_pose = self.world.get_link_pose(self) + + @property + def pose(self) -> Pose: + """ + The pose of the link relative to the world frame. + + :return: A Pose object containing the pose of the link relative to the world frame. + """ + return self._current_pose + + @property + def pose_as_list(self) -> List[List[float]]: + """ + The pose of the link relative to the world frame as a list. + + :return: A list containing the position and orientation of the link relative to the world frame. + """ + return self.pose.to_list() + + def get_origin_transform(self) -> Transform: + """ + Returns the transformation between the link frame and the origin frame of this link. + """ + return self.origin.to_transform(self.tf_frame) + + @property + def color(self) -> Color: + """ + The getter for the rgba_color of this link. + + :return: A Color object containing the rgba_color of this link. + """ + return self.world.get_link_color(self) + + @color.setter + def color(self, color: Color) -> None: + """ + The setter for the color of this link, could be rgb or rgba. + + :param color: The color as a list of floats, either rgb or rgba. + """ + self.world.set_link_color(self, color) + + @property + def origin_transform(self) -> Transform: + """ + :return: The transform from world to origin of entity. + """ + return self.origin.to_transform(self.tf_frame) + + @property + def tf_frame(self) -> str: + """ + The name of the tf frame of this link. + """ + return f"{self.object.tf_frame}/{self.name}" + + def __eq__(self, other): + return self.id == other.id and self.object == other.object and self.name == other.name + + def __copy__(self): + return Link(self.id, self, self.object) + + def __hash__(self): + return hash((self.id, self.object, self.name)) + + +class RootLink(Link, ABC): + """ + Represents the root link of an Object in the World. + It differs from the normal AbstractLink class in that the pose ande the tf_frame is the same as that of the object. + """ + + def __init__(self, obj: Object): + super().__init__(obj.get_root_link_id(), obj.get_root_link_description(), obj) + + @property + def tf_frame(self) -> str: + """ + Returns the tf frame of the root link, which is the same as the tf frame of the object. + """ + return self.object.tf_frame + + def _update_pose(self) -> None: + self._current_pose = self.object.get_pose() + + def __copy__(self): + return RootLink(self.object) + + +class Joint(ObjectEntity, JointDescription, ABC): + """ + Represents a joint of an Object in the World. + """ + + def __init__(self, _id: int, + joint_description: JointDescription, + obj: Object): + ObjectEntity.__init__(self, _id, obj) + JointDescription.__init__(self, joint_description.parsed_description) + self._update_position() + + @property + def tf_frame(self) -> str: + """ + The tf frame of a joint is the tf frame of the child link. + """ + return self.child_link.tf_frame + + @property + def pose(self) -> Pose: + """ + Returns the pose of this joint. The pose is the pose of the child link of this joint. + + :return: The pose of this joint. + """ + return self.child_link.pose + + def _update_position(self) -> None: + """ + Updates the current position of the joint from the physics simulator. + """ + self._current_position = self.world.get_joint_position(self) + + @property + def parent_link(self) -> Link: + """ + Returns the parent link of this joint. + + :return: The parent link as a AbstractLink object. + """ + return self.object.get_link(self.parent_link_name) + + @property + def child_link(self) -> Link: + """ + Returns the child link of this joint. + + :return: The child link as a AbstractLink object. + """ + return self.object.get_link(self.child_link_name) + + @property + def position(self) -> float: + return self._current_position + + def reset_position(self, position: float) -> None: + self.world.reset_joint_position(self, position) + self._update_position() + + def get_object_id(self) -> int: + """ + Returns the id of the object to which this joint belongs. + + :return: The integer id of the object to which this joint belongs. + """ + return self.object.id + + @position.setter + def position(self, joint_position: float) -> None: + """ + Sets the position of the given joint to the given joint pose. If the pose is outside the joint limits, + an error will be printed. However, the joint will be set either way. + + :param joint_position: The target pose for this joint + """ + # TODO Limits for rotational (infinite) joints are 0 and 1, they should be considered separately + if self.has_limits: + low_lim, up_lim = self.limits + if not low_lim <= joint_position <= up_lim: + logging.warning( + f"The joint position has to be within the limits of the joint. The joint limits for {self.name}" + f" are {low_lim} and {up_lim}") + logging.warning(f"The given joint position was: {joint_position}") + # Temporarily disabled because kdl outputs values exciting joint limits + # return + self.reset_position(joint_position) + + def enable_force_torque_sensor(self) -> None: + self.world.enable_joint_force_torque_sensor(self.object, self.id) + + def disable_force_torque_sensor(self) -> None: + self.world.disable_joint_force_torque_sensor(self.object, self.id) + + def get_reaction_force_torque(self) -> List[float]: + return self.world.get_joint_reaction_force_torque(self.object, self.id) + + def get_applied_motor_torque(self) -> float: + return self.world.get_applied_joint_motor_torque(self.object, self.id) + + @property + def current_state(self) -> JointState: + return JointState(self.position) + + @current_state.setter + def current_state(self, joint_state: JointState) -> None: + """ + Updates the current state of this joint from the given joint state if the position is different. + + :param joint_state: The joint state to update from. + """ + if self._current_position != joint_state.position: + self.position = joint_state.position + + def __copy__(self): + return Joint(self.id, self, self.object) + + def __eq__(self, other): + return self.id == other.id and self.object == other.object and self.name == other.name + + def __hash__(self): + return hash((self.id, self.object, self.name)) + + +class ObjectDescription(EntityDescription): + + """ + A class that represents the description of an object. + """ + + mesh_extensions: Tuple[str] = (".obj", ".stl", ".dae") + """ + The file extensions of the mesh files that can be used to generate a description file. + """ + + class Link(Link, ABC): + ... + + class RootLink(RootLink, ABC): + ... + + class Joint(Joint, ABC): + ... + + def __init__(self, path: Optional[str] = None): + """ + :param path: The path of the file to update the description data from. + """ + if path: + self.update_description_from_file(path) + else: + self._parsed_description = None + + def update_description_from_file(self, path: str) -> None: + """ + Updates the description of this object from the file at the given path. + + :param path: The path of the file to update from. + """ + self._parsed_description = self.load_description(path) + + @property + def parsed_description(self) -> Any: + """ + Return the object parsed from the description file. + """ + return self._parsed_description + + @parsed_description.setter + def parsed_description(self, parsed_description: Any): + """ + :param parsed_description: The parsed description object (depends on the description file type). + """ + self._parsed_description = parsed_description + + @abstractmethod + def load_description(self, path: str) -> Any: + """ + Loads the description from the file at the given path. + + :param path: The path to the source file, if only a filename is provided then the resources directories will be + searched. + """ + pass + + def generate_description_from_file(self, path: str, name: str, extension: str) -> str: + """ + Generates and preprocesses the description from the file at the given path and returns the preprocessed + description as a string. + + :param path: The path of the file to preprocess. + :param name: The name of the object. + :param extension: The file extension of the file to preprocess. + :return: The processed description string. + """ + description_string = None + + if extension in self.mesh_extensions: + description_string = self.generate_from_mesh_file(path, name) + elif extension == self.get_file_extension(): + description_string = self.generate_from_description_file(path) + else: + try: + # Using the description from the parameter server + description_string = self.generate_from_parameter_server(path) + except KeyError: + logging.warning(f"Couldn't find dile data in the ROS parameter server") + if description_string is None: + logging.error(f"Could not find file with path {path} in the resources directory nor" + f" in the ros parameter server.") + raise FileNotFoundError + + return description_string + + def get_file_name(self, path_object: pathlib.Path, extension: str, object_name: str) -> str: + """ + Returns the file name of the description file. + + :param path_object: The path object of the description file or the mesh file. + :param extension: The file extension of the description file or the mesh file. + :param object_name: The name of the object. + :return: The file name of the description file. + """ + if extension in self.mesh_extensions: + file_name = path_object.stem + self.get_file_extension() + elif extension == self.get_file_extension(): + file_name = path_object.name + else: + file_name = object_name + self.get_file_extension() + + return file_name + + @classmethod + @abstractmethod + def generate_from_mesh_file(cls, path: str, name: str) -> str: + """ + Generates a description file from one of the mesh types defined in the mesh_extensions and + returns the path of the generated file. + + :param path: The path to the .obj file. + :param name: The name of the object. + :return: The path of the generated description file. + """ + pass + + @classmethod + @abstractmethod + def generate_from_description_file(cls, path: str) -> str: + """ + Preprocesses the given file and returns the preprocessed description string. + + :param path: The path of the file to preprocess. + :return: The preprocessed description string. + """ + pass + + @classmethod + @abstractmethod + def generate_from_parameter_server(cls, name: str) -> str: + """ + Preprocesses the description from the ROS parameter server and returns the preprocessed description string. + + :param name: The name of the description on the parameter server. + :return: The preprocessed description string. + """ + pass + + @property + @abstractmethod + def links(self) -> List[LinkDescription]: + """ + :return: A list of links descriptions of this object. + """ + pass + + @abstractmethod + def get_link_by_name(self, link_name: str) -> LinkDescription: + """ + :return: The link description with the given name. + """ + pass + + @property + @abstractmethod + def joints(self) -> List[JointDescription]: + """ + :return: A list of joints descriptions of this object. + """ + pass + + @abstractmethod + def get_joint_by_name(self, joint_name: str) -> JointDescription: + """ + :return: The joint description with the given name. + """ + pass + + @abstractmethod + def get_root(self) -> str: + """ + :return: the name of the root link of this object. + """ + pass + + @abstractmethod + def get_chain(self, start_link_name: str, end_link_name: str) -> List[str]: + """ + :return: the chain of links from 'start_link_name' to 'end_link_name'. + """ + pass + + @staticmethod + @abstractmethod + def get_file_extension() -> str: + """ + :return: The file extension of the description file. + """ + pass diff --git a/src/pycram/designator.py b/src/pycram/designator.py index 13cdeaf87..385ac8a7a 100644 --- a/src/pycram/designator.py +++ b/src/pycram/designator.py @@ -1,32 +1,32 @@ # used for delayed evaluation of typing until python 3.11 becomes mainstream from __future__ import annotations -import dataclasses +from dataclasses import dataclass, field, fields from abc import ABC, abstractmethod -from copy import copy from inspect import isgenerator, isgeneratorfunction from sqlalchemy.orm.session import Session import rospy -from .bullet_world import (Object as BulletWorldObject, BulletWorld) +from .world import World +from .world_concepts.world_object import Object as WorldObject from .helper import GeneratorList, bcolors from threading import Lock from time import time -from typing import List, Dict, Any, Type, Optional, Union, get_type_hints, Callable, Tuple, Iterable +from typing_extensions import List, Dict, Any, Optional, Union, Callable, Iterable from .local_transformer import LocalTransformer from .language import Language -from .pose import Pose +from .datastructures.pose import Pose from .robot_descriptions import robot_description +from .datastructures.enums import ObjectType import logging from .orm.action_designator import (Action as ORMAction) from .orm.object_designator import (Object as ORMObjectDesignator) -from .orm.motion_designator import (Motion as ORMMotionDesignator) -from .orm.base import Quaternion, Position, Base, RobotState, ProcessMetaData +from .orm.base import RobotState, ProcessMetaData from .task import with_tree @@ -73,11 +73,11 @@ class Designator(ABC): argument and return a list of solutions. A solution can also be a generator. """ - def __init__(self, description: Type[DesignatorDescription], parent: Optional[Designator] = None): + def __init__(self, description: DesignatorDescription, parent: Optional[Designator] = None): """Create a new desginator. Arguments: - :param properties: A list of tuples (key-value pairs) describing this designator. + :param description: A list of tuples (key-value pairs) describing this designator. :param parent: The parent to equate with (default is None). """ self._mutex: Lock = Lock() @@ -88,7 +88,7 @@ def __init__(self, description: Type[DesignatorDescription], parent: Optional[De self._solutions = None self._index: int = 0 self.timestamp = None - self._description: Type[DesignatorDescription] = description + self._description: DesignatorDescription = description if parent is not None: self.equate(parent) @@ -359,136 +359,39 @@ def get_slots(self) -> List[str]: """ return list(self.__dict__.keys()) - def copy(self) -> Type[DesignatorDescription]: + def copy(self) -> DesignatorDescription: return self -class MotionDesignatorDescription(DesignatorDescription, Language): - """ - Parent class of motion designator descriptions. - """ - - @dataclasses.dataclass - class Motion: - """ - Resolved motion designator which can be performed - """ - cmd: str - """ - Command of this motion designator, is used to match process modules to motion designator. Cmd is inherited by - every motion designator. - """ - - @with_tree - def perform(self): - """ - Passes this designator to the process module for execution. - - :return: The return value of the process module if there is any. - """ - raise NotImplementedError() - # return ProcessModule.perform(self) - - def to_sql(self) -> ORMMotionDesignator: - """ - Create an ORM object that corresponds to this description. - - :return: The created ORM object. - """ - return ORMMotionDesignator() - - def insert(self, session: Session, *args, **kwargs) -> ORMMotionDesignator: - """ - Add and commit this and all related objects to the session. - Auto-Incrementing primary keys and foreign keys have to be filled by this method. - - :param session: Session with a database that is used to add and commit the objects - :return: The completely instanced ORM motion. - """ - metadata = ProcessMetaData().insert(session) - - motion = self.to_sql() - motion.process_metadata_id = metadata.id - - return motion - - def ground(self) -> Motion: - """Fill all missing parameters and pass the designator to the process module. """ - raise NotImplementedError(f"{type(self)}.ground() is not implemented.") - - def __init__(self, resolver=None): - """ - Creates a new motion designator description - - :param resolver: An alternative resolver which overrides self.resolve() - """ - super().__init__(resolver) - - def get_slots(self): - """ - Returns a list of all slots of this description. Can be used for inspecting - different descriptions and debugging. - - :return: A list of all slots. - """ - return list(self.__dict__.keys()).remove('cmd') - - def _check_properties(self, desig: str, exclude: List[str] = []) -> None: - """ - Checks the properties of this description. It will be checked if any attribute is - None and if any attribute has to wrong type according to the type hints in - the description class. - It is possible to provide a list of attributes which should not be checked. - - :param desig: The current type of designator, will be used when raising an - Exception as output. - :param exclude: A list of properties which should not be checked. - """ - right_types = get_type_hints(self.Motion) - attributes = self.__dict__.copy() - del attributes["resolve"] - missing = [] - wrong_type = {} - current_type = {} - for k in attributes.keys(): - if attributes[k] == None and not attributes[k] in exclude: - missing.append(k) - elif type(attributes[k]) != right_types[k] and not attributes[k] in exclude: - wrong_type[k] = right_types[k] - current_type[k] = type(attributes[k]) - if missing != [] or wrong_type != {}: - raise ResolutionError(missing, wrong_type, current_type, desig) - - class ActionDesignatorDescription(DesignatorDescription, Language): """ Abstract class for action designator descriptions. Descriptions hold possible parameter ranges for action designators. """ - @dataclasses.dataclass + @dataclass class Action: """ The performable designator with a single element for each list of possible parameter. """ - robot_position: Pose = dataclasses.field(init=False) + robot_position: Pose = field(init=False) """ The position of the robot at the start of the action. """ - robot_torso_height: float = dataclasses.field(init=False) + robot_torso_height: float = field(init=False) """ The torso height of the robot at the start of the action. """ - robot_type: str = dataclasses.field(init=False) + robot_type: ObjectType = field(init=False) """ The type of the robot at the start of the action. """ def __post_init__(self): - self.robot_position = BulletWorld.robot.get_pose() - self.robot_torso_height = BulletWorld.robot.get_joint_state(robot_description.torso_joint) - self.robot_type = BulletWorld.robot.type + self.robot_position = World.robot.get_pose() + self.robot_torso_height = World.robot.get_joint_position(robot_description.torso_joint) + self.robot_type = World.robot.obj_type @with_tree def perform(self) -> Any: @@ -522,15 +425,15 @@ def insert(self, session: Session, *args, **kwargs) -> ORMAction: metadata = ProcessMetaData().insert(session) # create robot-state object - robot_state = RobotState(self.robot_torso_height, self.robot_type, pose.id) - robot_state.process_metadata_id = metadata.id + robot_state = RobotState(self.robot_torso_height, self.robot_type) + robot_state.pose = pose + robot_state.process_metadata = metadata session.add(robot_state) - session.commit() # create action action = self.to_sql() - action.process_metadata_id = metadata.id - action.robot_state_id = robot_state.id + action.process_metadata = metadata + action.robot_state = robot_state return action @@ -556,7 +459,7 @@ class LocationDesignatorDescription(DesignatorDescription): Parent class of location designator descriptions. """ - @dataclasses.dataclass + @dataclass class Location: """ Resolved location that represents a specific point in the world which satisfies the constraints of the location @@ -595,7 +498,7 @@ class ObjectDesignatorDescription(DesignatorDescription): Descriptions hold possible parameter ranges for object designators. """ - @dataclasses.dataclass + @dataclass class Object: """ A single element that fits the description. @@ -606,25 +509,25 @@ class Object: Name of the object """ - type: str + obj_type: ObjectType """ Type of the object """ - bullet_world_object: Optional[BulletWorldObject] + world_object: Optional[WorldObject] """ - Reference to the BulletWorld object + Reference to the World object """ - _pose: Optional[Callable] = dataclasses.field(init=False) + _pose: Optional[Callable] = field(init=False) """ A callable returning the pose of this object. The _pose member is used overwritten for data copies - which will not update when the original bullet_world_object is moved. + which will not update when the original world_object is moved. """ def __post_init__(self): - if self.bullet_world_object: - self._pose = self.bullet_world_object.get_pose + if self.world_object: + self._pose = self.world_object.get_pose def to_sql(self) -> ORMObjectDesignator: """ @@ -632,7 +535,7 @@ def to_sql(self) -> ORMObjectDesignator: :return: The created ORM object. """ - return ORMObjectDesignator(self.type, self.name) + return ORMObjectDesignator(self.obj_type, self.name) def insert(self, session: Session) -> ORMObjectDesignator: """ @@ -643,25 +546,22 @@ def insert(self, session: Session) -> ORMObjectDesignator: :return: The completely instanced ORM object """ metadata = ProcessMetaData().insert(session) + pose = self.pose.insert(session) # create object orm designator obj = self.to_sql() - obj.process_metadata_id = metadata.id - - pose = self.pose.insert(session) - obj.pose_id = pose.id - + obj.process_metadata = metadata + obj.pose = pose session.add(obj) - session.commit() return obj - def data_copy(self) -> 'ObjectDesignatorDescription.Object': + def frozen_copy(self) -> 'ObjectDesignatorDescription.Object': """ - :return: A copy containing only the fields of this class. The BulletWorldObject attached to this pycram - object is not copied. The _pose gets set to a method that statically returns the pose of the object when - this method was called. + Returns a copy of this designator containing only the fields. + + :return: A copy containing only the fields of this class. The WorldObject attached to this pycram object is not copied. The _pose gets set to a method that statically returns the pose of the object when this method was called. """ - result = ObjectDesignatorDescription.Object(self.name, self.type, None) + result = ObjectDesignatorDescription.Object(self.name, self.obj_type, None) # get current object pose and set resulting pose to always be that pose = self.pose result.pose = lambda: pose @@ -688,7 +588,7 @@ def pose(self, value: Callable): def __repr__(self): return self.__class__.__qualname__ + f"(" + ', '.join( - [f"{f.name}={self.__getattribute__(f.name)}" for f in dataclasses.fields(self)] + [ + [f"{f.name}={self.__getattribute__(f.name)}" for f in fields(self)] + [ f"pose={self.pose}"]) + ')' def special_knowledge_adjustment_pose(self, grasp: str, pose: Pose) -> Pose: @@ -700,11 +600,11 @@ def special_knowledge_adjustment_pose(self, grasp: str, pose: Pose) -> Pose: :return: The adjusted grasp pose """ lt = LocalTransformer() - pose_in_object = lt.transform_to_object_frame(pose, self.bullet_world_object) + pose_in_object = lt.transform_pose(pose, self.world_object.tf_frame) special_knowledge = [] # Initialize as an empty list - if self.type in SPECIAL_KNOWLEDGE: - special_knowledge = SPECIAL_KNOWLEDGE[self.type] + if self.obj_type in SPECIAL_KNOWLEDGE: + special_knowledge = SPECIAL_KNOWLEDGE[self.obj_type] for key, value in special_knowledge: if key == grasp: @@ -716,26 +616,7 @@ def special_knowledge_adjustment_pose(self, grasp: str, pose: Pose) -> Pose: return pose_in_object return pose - # def special_knowledge(self, grasp, pose): - # """ - # Returns t special knowledge for "grasp front". - # """ - # - # special_knowledge = [] # Initialize as an empty list - # if self.type in SPECIAL_KNOWLEDGE: - # special_knowledge = SPECIAL_KNOWLEDGE[self.type] - # - # for key, value in special_knowledge: - # if key == grasp: - # # Adjust target pose based on special knowledge - # pose.pose.position.x += value[0] - # pose.pose.position.y += value[1] - # pose.pose.position.z += value[2] - # print("Adjusted target pose based on special knowledge for grasp: ", grasp) - # return pose - # return pose - - def __init__(self, names: Optional[List[str]] = None, types: Optional[List[str]] = None, + def __init__(self, names: Optional[List[str]] = None, types: Optional[List[ObjectType]] = None, resolver: Optional[Callable] = None): """ Base of all object designator descriptions. Every object designator has the name and type of the object. @@ -745,12 +626,12 @@ def __init__(self, names: Optional[List[str]] = None, types: Optional[List[str]] :param resolver: An alternative resolver that returns an object designator for the list of names and types """ super().__init__(resolver) - self.types: Optional[List[str]] = types + self.types: Optional[List[ObjectType]] = types self.names: Optional[List[str]] = names def ground(self) -> Union[Object, bool]: """ - Return the first object from the bullet world that fits the description. + Return the first object from the world that fits the description. :return: A resolved object designator """ @@ -762,15 +643,15 @@ def __iter__(self) -> Iterable[Object]: :yield: A resolved object designator """ - # for every bullet world object - for obj in BulletWorld.current_bullet_world.objects: + # for every world object + for obj in World.current_world.objects: # skip if name does not match specification if self.names and obj.name not in self.names: continue # skip if type does not match specification - if self.types and obj.type not in self.types: + if self.types and obj.obj_type not in self.types: continue - yield self.Object(obj.name, obj.type, obj) \ No newline at end of file + yield self.Object(obj.name, obj.obj_type, obj) \ No newline at end of file diff --git a/src/pycram/designators/action_designator.py b/src/pycram/designators/action_designator.py index 6935b0c69..f22fa75dc 100644 --- a/src/pycram/designators/action_designator.py +++ b/src/pycram/designators/action_designator.py @@ -1,31 +1,18 @@ -import dataclasses import itertools -import time -from typing import List, Optional, Any, Tuple, Union +from typing_extensions import List, Union, Callable +from typing_extensions import Any, Union -import sqlalchemy.orm - -from .location_designator import CostmapLocation -from .motion_designator import * from .object_designator import ObjectDesignatorDescription, BelieveObject, ObjectPart -from ..local_transformer import LocalTransformer -from ..orm.action_designator import (ParkArmsAction as ORMParkArmsAction, NavigateAction as ORMNavigateAction, - PickUpAction as ORMPickUpAction, PlaceAction as ORMPlaceAction, - MoveTorsoAction as ORMMoveTorsoAction, SetGripperAction as ORMSetGripperAction, - Action as ORMAction, LookAtAction as ORMLookAtAction, - DetectAction as ORMDetectAction, TransportAction as ORMTransportAction, - OpenAction as ORMOpenAction, CloseAction as ORMCloseAction, - GraspingAction as ORMGraspingAction) - -from ..orm.base import Quaternion, Position, Base, RobotState, ProcessMetaData -from ..plan_failures import ObjectUnfetchable, ReachabilityFailure -from ..robot_descriptions import robot_description -from ..task import with_tree -from ..enums import Arms +from ..datastructures.enums import Arms from ..designator import ActionDesignatorDescription -from ..bullet_world import BulletWorld -from ..pose import Pose -from ..helper import multiply_quaternions +from .actions.actions import (ParkArmsActionPerformable, MoveTorsoActionPerformable, + SetGripperActionPerformable, GripActionPerformable, + PlaceActionPerformable, PickUpActionPerformable, + NavigateActionPerformable, TransportActionPerformable, + LookAtActionPerformable, DetectActionPerformable, OpenActionPerformable, + CloseActionPerformable, GraspingActionPerformable, + ReleaseActionPerformable) +from ..datastructures.pose import Pose class MoveTorsoAction(ActionDesignatorDescription): @@ -33,30 +20,6 @@ class MoveTorsoAction(ActionDesignatorDescription): Action Designator for Moving the torso of the robot up and down """ - @dataclasses.dataclass - class Action(ActionDesignatorDescription.Action): - """ - Performable Move Torso Action designator. - """ - - position: float - """ - Target position of the torso joint - """ - - @with_tree - def perform(self) -> None: - MoveJointsMotion([robot_description.torso_joint], [self.position]).resolve().perform() - - def to_sql(self) -> ORMMoveTorsoAction: - return ORMMoveTorsoAction(self.position) - - def insert(self, session: sqlalchemy.orm.session.Session, **kwargs) -> ORMMoveTorsoAction: - action = super().insert(session) - session.add(action) - session.commit() - return action - def __init__(self, positions: List[float], resolver=None): """ Create a designator description to move the torso of the robot up and down. @@ -67,13 +30,13 @@ def __init__(self, positions: List[float], resolver=None): super().__init__(resolver) self.positions: List[float] = positions - def ground(self) -> Action: + def ground(self) -> MoveTorsoActionPerformable: """ Creates a performable action designator with the first element from the list of possible torso heights. :return: A performable action designator """ - return self.Action(self.positions[0]) + return MoveTorsoActionPerformable(self.positions[0]) def __iter__(self): """ @@ -82,7 +45,7 @@ def __iter__(self): :return: A performable action designator """ for position in self.positions: - yield self.Action(position) + yield MoveTorsoActionPerformable(position) class SetGripperAction(ActionDesignatorDescription): @@ -90,30 +53,6 @@ class SetGripperAction(ActionDesignatorDescription): Set the gripper state of the robot """ - @dataclasses.dataclass - class Action(ActionDesignatorDescription.Action): - gripper: str - """ - The gripper that should be set - """ - motion: str - """ - The motion that should be set on the gripper - """ - - @with_tree - def perform(self) -> None: - MoveGripperMotion(gripper=self.gripper, motion=self.motion).resolve().perform() - - def to_sql(self) -> ORMSetGripperAction: - return ORMSetGripperAction(self.gripper, self.motion) - - def insert(self, session: sqlalchemy.orm.session.Session, *args, **kwargs) -> ORMSetGripperAction: - action = super().insert(session) - session.add(action) - session.commit() - return action - def __init__(self, grippers: List[str], motions: List[str], resolver=None): """ Sets the gripper state, the desired state is given with the motion. Motion can either be 'open' or 'close'. @@ -126,13 +65,13 @@ def __init__(self, grippers: List[str], motions: List[str], resolver=None): self.grippers: List[str] = grippers self.motions: List[str] = motions - def ground(self) -> Action: + def ground(self) -> SetGripperActionPerformable: """ Default resolver that returns a performable designator with the first element in the grippers and motions list. :return: A performable designator """ - return self.Action(self.grippers[0], self.motions[0]) + return SetGripperActionPerformable(self.grippers[0], self.motions[0]) def __iter__(self): """ @@ -141,7 +80,7 @@ def __iter__(self): :return: A performable designator with a combination of gripper and motion """ for parameter_combination in itertools.product(self.grippers, self.motions): - yield self.Action(*parameter_combination) + yield SetGripperActionPerformable(*parameter_combination) class ReleaseAction(ActionDesignatorDescription): @@ -151,29 +90,14 @@ class ReleaseAction(ActionDesignatorDescription): Note: This action can not be used yet. """ - @dataclasses.dataclass - class Action(ActionDesignatorDescription.Action): - gripper: str - object_designator: ObjectDesignatorDescription.Object - - @with_tree - def perform(self) -> Any: - raise NotImplementedError() - - def to_sql(self) -> Base: - raise NotImplementedError() - - def insert(self, session: sqlalchemy.orm.session.Session, *args, **kwargs) -> Base: - raise NotImplementedError() - def __init__(self, grippers: List[str], object_designator_description: ObjectDesignatorDescription, resolver=None): super().__init__(resolver) self.grippers: List[str] = grippers self.object_designator_description = object_designator_description - def ground(self) -> Action: - return self.Action(self.grippers[0], self.object_designator_description.ground()) + def ground(self) -> ReleaseActionPerformable: + return ReleaseActionPerformable(self.grippers[0], self.object_designator_description.ground()) class GripAction(ActionDesignatorDescription): @@ -187,22 +111,6 @@ class GripAction(ActionDesignatorDescription): Note: This action can not be used yet. """ - @dataclasses.dataclass - class Action(ActionDesignatorDescription.Action): - gripper: str - object_designator: ObjectDesignatorDescription.Object - effort: float - - @with_tree - def perform(self) -> Any: - raise NotImplementedError() - - def to_sql(self) -> Base: - raise NotImplementedError() - - def insert(self, session: sqlalchemy.orm.session.Session, *args, **kwargs) -> Base: - raise NotImplementedError() - def __init__(self, grippers: List[str], object_designator_description: ObjectDesignatorDescription, efforts: List[float], resolver=None): super().__init__(resolver) @@ -210,8 +118,8 @@ def __init__(self, grippers: List[str], object_designator_description: ObjectDes self.object_designator_description: ObjectDesignatorDescription = object_designator_description self.efforts: List[float] = efforts - def ground(self) -> Action: - return self.Action(self.grippers[0], self.object_designator_description.ground(), self.efforts[0]) + def ground(self) -> GripActionPerformable: + return GripActionPerformable(self.grippers[0], self.object_designator_description.ground(), self.efforts[0]) class ParkArmsAction(ActionDesignatorDescription): @@ -219,37 +127,6 @@ class ParkArmsAction(ActionDesignatorDescription): Park the arms of the robot. """ - @dataclasses.dataclass - class Action(ActionDesignatorDescription.Action): - - arm: Arms - """ - Entry from the enum for which arm should be parked - """ - - @with_tree - def perform(self) -> None: - # create the keyword arguments - kwargs = dict() - - # add park left arm if wanted - if self.arm in [Arms.LEFT, Arms.BOTH]: - kwargs["left_arm_config"] = "park" - - # add park right arm if wanted - if self.arm in [Arms.RIGHT, Arms.BOTH]: - kwargs["right_arm_config"] = "park" - MoveArmJointsMotion(**kwargs).resolve().perform() - - def to_sql(self) -> ORMParkArmsAction: - return ORMParkArmsAction(self.arm.name) - - def insert(self, session: sqlalchemy.orm.session.Session, **kwargs) -> ORMParkArmsAction: - action = super().insert(session) - session.add(action) - session.commit() - return action - def __init__(self, arms: List[Arms], resolver=None): """ Moves the arms in the pre-defined parking position. Arms are taken from pycram.enum.Arms @@ -260,13 +137,13 @@ def __init__(self, arms: List[Arms], resolver=None): super().__init__(resolver) self.arms: List[Arms] = arms - def ground(self) -> Action: + def ground(self) -> ParkArmsActionPerformable: """ Default resolver that returns a performable designator with the first element of the list of possible arms :return: A performable designator """ - return self.Action(self.arms[0]) + return ParkArmsActionPerformable(self.arms[0]) class PickUpAction(ActionDesignatorDescription): @@ -274,110 +151,6 @@ class PickUpAction(ActionDesignatorDescription): Designator to let the robot pick up an object. """ - @dataclasses.dataclass - class Action(ActionDesignatorDescription.Action): - - object_designator: ObjectDesignatorDescription.Object - """ - Object designator describing the object that should be picked up - """ - - arm: str - """ - The arm that should be used for pick up - """ - - grasp: str - """ - The grasp that should be used. For example, 'left' or 'right' - """ - - object_at_execution: Optional[ObjectDesignatorDescription.Object] = dataclasses.field(init=False) - """ - The object at the time this Action got created. It is used to be a static, information holding entity. It is - not updated when the BulletWorld object is changed. - """ - - @with_tree - def perform(self) -> None: - # Store the object's data copy at execution - self.object_at_execution = self.object_designator.data_copy() - robot = BulletWorld.robot - # Retrieve object and robot from designators - object = self.object_designator.bullet_world_object - # Get grasp orientation and target pose - grasp = robot_description.grasps.get_orientation_for_grasp(self.grasp) - # oTm = Object Pose in Frame map - oTm = object.get_pose() - # Transform the object pose to the object frame, basically the origin of the object frame - mTo = object.local_transformer.transform_to_object_frame(oTm, object) - # Adjust the pose according to the special knowledge of the object designator - adjusted_pose = self.object_designator.special_knowledge_adjustment_pose(self.grasp, mTo) - # Transform the adjusted pose to the map frame - adjusted_oTm = object.local_transformer.transform_pose(adjusted_pose, "map") - # multiplying the orientation therefore "rotating" it, to get the correct orientation of the gripper - ori = multiply_quaternions([adjusted_oTm.orientation.x, adjusted_oTm.orientation.y, - adjusted_oTm.orientation.z, adjusted_oTm.orientation.w], - grasp) - - # Set the orientation of the object pose by grasp in MAP - adjusted_oTm.orientation.x = ori[0] - adjusted_oTm.orientation.y = ori[1] - adjusted_oTm.orientation.z = ori[2] - adjusted_oTm.orientation.w = ori[3] - - # prepose depending on the gripper (its annoying we have to put pr2_1 here tbh - # gripper_frame = "pr2_1/l_gripper_tool_frame" if self.arm == "left" else "pr2_1/r_gripper_tool_frame" - gripper_frame = robot.get_link_tf_frame(robot_description.get_tool_frame(self.arm)) - # First rotate the gripper, so the further calculations makes sense - tmp_for_rotate_pose = object.local_transformer.transform_pose(adjusted_oTm, gripper_frame) - tmp_for_rotate_pose.pose.position.x = 0 - tmp_for_rotate_pose.pose.position.y = 0 - tmp_for_rotate_pose.pose.position.z = -0.1 - gripper_rotate_pose = object.local_transformer.transform_pose(tmp_for_rotate_pose, "map") - - #Perform Gripper Rotate - # BulletWorld.current_bullet_world.add_vis_axis(gripper_rotate_pose) - # MoveTCPMotion(gripper_rotate_pose, self.arm).resolve().perform() - - oTg = object.local_transformer.transform_pose(adjusted_oTm, gripper_frame) - oTg.pose.position.x -= 0.07 # in x since this is how the gripper is oriented - prepose = object.local_transformer.transform_pose(oTg, "map") - - # Perform the motion with the prepose and open gripper - BulletWorld.current_bullet_world.add_vis_axis(prepose) - MoveTCPMotion(prepose, self.arm).resolve().perform() - MoveGripperMotion(motion="open", gripper=self.arm).resolve().perform() - - # Perform the motion with the adjusted pose -> actual grasp and close gripper - BulletWorld.current_bullet_world.add_vis_axis(adjusted_oTm) - MoveTCPMotion(adjusted_oTm, self.arm).resolve().perform() - adjusted_oTm.pose.position.z += 0.03 - MoveGripperMotion(motion="close", gripper=self.arm).resolve().perform() - tool_frame = robot_description.get_tool_frame(self.arm) - robot.attach(object, tool_frame) - - # Lift object - BulletWorld.current_bullet_world.add_vis_axis(adjusted_oTm) - MoveTCPMotion(adjusted_oTm, self.arm).resolve().perform() - - # Remove the vis axis from the world - BulletWorld.current_bullet_world.remove_vis_axis() - - def to_sql(self) -> ORMPickUpAction: - return ORMPickUpAction(self.arm, self.grasp) - - def insert(self, session: sqlalchemy.orm.session.Session, **kwargs) -> ORMPickUpAction: - action = super().insert(session) - - od = self.object_at_execution.insert(session) - action.object_id = od.id - - session.add(action) - session.commit() - - return action - def __init__(self, object_designator_description: Union[ObjectDesignatorDescription, ObjectDesignatorDescription.Object], arms: List[str], grasps: List[str], resolver=None): """ @@ -395,16 +168,18 @@ def __init__(self, object_designator_description: Union[ObjectDesignatorDescrip self.arms: List[str] = arms self.grasps: List[str] = grasps - def ground(self) -> Action: + def ground(self) -> PickUpActionPerformable: """ Default resolver, returns a performable designator with the first entries from the lists of possible parameter. :return: A performable designator """ - obj_desig = self.object_designator_description if isinstance(self.object_designator_description, - ObjectDesignatorDescription.Object) else self.object_designator_description.resolve() + if isinstance(self.object_designator_description, ObjectDesignatorDescription.Object): + obj_desig = self.object_designator_description + else: + obj_desig = self.object_designator_description.resolve() - return self.Action(obj_desig, self.arms[0], self.grasps[0]) + return PickUpActionPerformable(obj_desig, self.arms[0], self.grasps[0]) class PlaceAction(ActionDesignatorDescription): @@ -412,59 +187,6 @@ class PlaceAction(ActionDesignatorDescription): Places an Object at a position using an arm. """ - @dataclasses.dataclass - class Action(ActionDesignatorDescription.Action): - - object_designator: ObjectDesignatorDescription.Object - """ - Object designator describing the object that should be place - """ - arm: str - """ - Arm that is currently holding the object - """ - target_location: Pose - """ - Pose in the world at which the object should be placed - """ - - @with_tree - def perform(self) -> None: - object_pose = self.object_designator.bullet_world_object.get_pose() - local_tf = LocalTransformer() - - # Transformations such that the target position is the position of the object and not the tcp - tcp_to_object = local_tf.transform_pose(object_pose, - BulletWorld.robot.get_link_tf_frame( - robot_description.get_tool_frame(self.arm))) - target_diff = self.target_location.to_transform("target").inverse_times( - tcp_to_object.to_transform("object")).to_pose() - - MoveTCPMotion(target_diff, self.arm).resolve().perform() - MoveGripperMotion("open", self.arm).resolve().perform() - BulletWorld.robot.detach(self.object_designator.bullet_world_object) - retract_pose = local_tf.transform_pose(target_diff,BulletWorld.robot.get_link_tf_frame( - robot_description.get_tool_frame(self.arm))) - retract_pose.position.x -= 0.07 - MoveTCPMotion(retract_pose, self.arm).resolve().perform() - - def to_sql(self) -> ORMPlaceAction: - return ORMPlaceAction(self.arm) - - def insert(self, session, *args, **kwargs) -> ORMPlaceAction: - action = super().insert(session) - - od = self.object_designator.insert(session) - action.object_id = od.id - - pose = self.target_location.insert(session) - action.pose_id = pose.id - - session.add(action) - session.commit() - - return action - def __init__(self, object_designator_description: Union[ObjectDesignatorDescription, ObjectDesignatorDescription.Object], target_locations: List[Pose], @@ -483,7 +205,7 @@ def __init__(self, self.target_locations: List[Pose] = target_locations self.arms: List[str] = arms - def ground(self) -> Action: + def ground(self) -> PlaceActionPerformable: """ Default resolver that returns a performable designator with the first entries from the list of possible entries. @@ -492,7 +214,7 @@ def ground(self) -> Action: obj_desig = self.object_designator_description if isinstance(self.object_designator_description, ObjectDesignatorDescription.Object) else self.object_designator_description.resolve() - return self.Action(obj_desig, self.arms[0], self.target_locations[0]) + return PlaceActionPerformable(obj_desig, self.arms[0], self.target_locations[0]) class NavigateAction(ActionDesignatorDescription): @@ -500,31 +222,6 @@ class NavigateAction(ActionDesignatorDescription): Navigates the Robot to a position. """ - @dataclasses.dataclass - class Action(ActionDesignatorDescription.Action): - target_location: Pose - """ - Location to which the robot should be navigated - """ - - @with_tree - def perform(self) -> None: - MoveMotion(self.target_location).resolve().perform() - - def to_sql(self) -> ORMNavigateAction: - return ORMNavigateAction() - - def insert(self, session, *args, **kwargs) -> ORMNavigateAction: - action = super().insert(session) - - pose = self.target_location.insert(session) - action.pose_id = pose.id - - session.add(action) - session.commit() - - return action - def __init__(self, target_locations: List[Pose], resolver=None): """ Navigates the robot to a location. @@ -535,13 +232,13 @@ def __init__(self, target_locations: List[Pose], resolver=None): super().__init__(resolver) self.target_locations: List[Pose] = target_locations - def ground(self) -> Action: + def ground(self) -> NavigateActionPerformable: """ Default resolver that returns a performable designator with the first entry of possible target locations. :return: A performable designator """ - return self.Action(self.target_locations[0]) + return NavigateActionPerformable(self.target_locations[0]) class TransportAction(ActionDesignatorDescription): @@ -549,67 +246,6 @@ class TransportAction(ActionDesignatorDescription): Transports an object to a position using an arm """ - @dataclasses.dataclass - class Action(ActionDesignatorDescription.Action): - object_designator: ObjectDesignatorDescription.Object - """ - Object designator describing the object that should be transported. - """ - arm: str - """ - Arm that should be used - """ - target_location: Pose - """ - Target Location to which the object should be transported - """ - - @with_tree - def perform(self) -> None: - robot_desig = BelieveObject(names=[robot_description.name]) - ParkArmsAction.Action(Arms.BOTH).perform() - pickup_loc = CostmapLocation(target=self.object_designator, reachable_for=robot_desig.resolve(), - reachable_arm=self.arm) - # Tries to find a pick-up posotion for the robot that uses the given arm - pickup_pose = None - for pose in pickup_loc: - if self.arm in pose.reachable_arms: - pickup_pose = pose - break - if not pickup_pose: - raise ObjectUnfetchable( - f"Found no pose for the robot to grasp the object: {self.object_designator} with arm: {self.arm}") - - NavigateAction([pickup_pose.pose]).resolve().perform() - PickUpAction.Action(self.object_designator, self.arm, "front").perform() - ParkArmsAction.Action(Arms.BOTH).perform() - try: - place_loc = CostmapLocation(target=self.target_location, reachable_for=robot_desig.resolve(), - reachable_arm=self.arm).resolve() - except StopIteration: - raise ReachabilityFailure( - f"No location found from where the robot can reach the target location: {self.target_location}") - NavigateAction([place_loc.pose]).resolve().perform() - PlaceAction.Action(self.object_designator, self.arm, self.target_location).perform() - ParkArmsAction.Action(Arms.BOTH).perform() - - def to_sql(self) -> ORMTransportAction: - return ORMTransportAction(self.arm) - - def insert(self, session: sqlalchemy.orm.session.Session, *args, **kwargs) -> ORMTransportAction: - action = super().insert(session) - - od = self.object_designator.insert(session) - action.object_id = od.id - - pose = self.target_location.insert(session) - action.pose_id = pose.id - - session.add(action) - session.commit() - - return action - def __init__(self, object_designator_description: Union[ObjectDesignatorDescription, ObjectDesignatorDescription.Object], arms: List[str], @@ -628,17 +264,17 @@ def __init__(self, self.arms: List[str] = arms self.target_locations: List[Pose] = target_locations - def ground(self) -> Action: + def ground(self) -> TransportActionPerformable: """ Default resolver that returns a performable designator with the first entries from the lists of possible parameter. :return: A performable designator """ - obj_desig = self.object_designator_description if isinstance(self.object_designator_description, - ObjectDesignatorDescription.Object) else self.object_designator_description.resolve() - return self.Action(obj_desig, - self.arms[0], - self.target_locations[0]) + obj_desig = self.object_designator_description \ + if isinstance(self.object_designator_description, ObjectDesignatorDescription.Object)\ + else self.object_designator_description.resolve() + + return TransportActionPerformable(obj_desig, self.arms[0], self.target_locations[0]) class LookAtAction(ActionDesignatorDescription): @@ -646,30 +282,6 @@ class LookAtAction(ActionDesignatorDescription): Lets the robot look at a position. """ - @dataclasses.dataclass - class Action(ActionDesignatorDescription.Action): - target: Pose - """ - Position at which the robot should look, given as 6D pose - """ - - @with_tree - def perform(self) -> None: - LookingMotion(target=self.target).resolve().perform() - - def to_sql(self) -> ORMLookAtAction: - return ORMLookAtAction() - - def insert(self, session: sqlalchemy.orm.session.Session, *args, **kwargs) -> ORMLookAtAction: - action = super().insert(session) - - pose = self.target.insert(session) - action.pose_id = pose.id - - session.add(action) - session.commit() - return action - def __init__(self, targets: List[Pose], resolver=None): """ Moves the head of the robot such that it points towards the given target location. @@ -680,13 +292,13 @@ def __init__(self, targets: List[Pose], resolver=None): super().__init__(resolver) self.targets: List[Pose] = targets - def ground(self) -> Action: + def ground(self) -> LookAtActionPerformable: """ Default resolver that returns a performable designator with the first entry in the list of possible targets :return: A performable designator """ - return self.Action(self.targets[0]) + return LookAtActionPerformable(self.targets[0]) class DetectAction(ActionDesignatorDescription): @@ -694,31 +306,6 @@ class DetectAction(ActionDesignatorDescription): Detects an object that fits the object description and returns an object designator describing the object. """ - @dataclasses.dataclass - class Action(ActionDesignatorDescription.Action): - object_designator: ObjectDesignatorDescription.Object - """ - Object designator loosely describing the object, e.g. only type. - """ - - @with_tree - def perform(self) -> Any: - return DetectingMotion(object_type=self.object_designator.type).resolve().perform() - - def to_sql(self) -> ORMDetectAction: - return ORMDetectAction() - - def insert(self, session: sqlalchemy.orm.session.Session, *args, **kwargs) -> ORMDetectAction: - action = super().insert(session) - - od = self.object_designator.insert(session) - action.object_id = od.id - - session.add(action) - session.commit() - - return action - def __init__(self, object_designator_description: ObjectDesignatorDescription, resolver=None): """ Tries to detect an object in the field of view (FOV) of the robot. @@ -729,13 +316,13 @@ def __init__(self, object_designator_description: ObjectDesignatorDescription, r super().__init__(resolver) self.object_designator_description: ObjectDesignatorDescription = object_designator_description - def ground(self) -> Action: + def ground(self) -> DetectActionPerformable: """ Default resolver that returns a performable designator with the resolved object description. :return: A performable designator """ - return self.Action(self.object_designator_description.resolve()) + return DetectActionPerformable(self.object_designator_description.resolve()) class OpenAction(ActionDesignatorDescription): @@ -745,38 +332,6 @@ class OpenAction(ActionDesignatorDescription): Can currently not be used """ - @dataclasses.dataclass - class Action(ActionDesignatorDescription.Action): - object_designator: ObjectPart.Object - """ - Object designator describing the object that should be opened - """ - arm: str - """ - Arm that should be used for opening the container - """ - - @with_tree - def perform(self) -> Any: - GraspingAction.Action(self.arm, self.object_designator).perform() - OpeningMotion(self.object_designator, self.arm).resolve().perform() - - MoveGripperMotion("open", self.arm, allow_gripper_collision=True).resolve().perform() - - def to_sql(self) -> ORMOpenAction: - return ORMOpenAction(self.arm) - - def insert(self, session: sqlalchemy.orm.session.Session, *args, **kwargs) -> ORMOpenAction: - action = super().insert(session) - - op = self.object_designator.insert(session) - action.object_id = op.id - - session.add(action) - session.commit() - - return action - def __init__(self, object_designator_description: ObjectPart, arms: List[str], resolver=None): """ Moves the arm of the robot to open a container. @@ -789,14 +344,14 @@ def __init__(self, object_designator_description: ObjectPart, arms: List[str], r self.object_designator_description: ObjectPart = object_designator_description self.arms: List[str] = arms - def ground(self) -> Action: + def ground(self) -> OpenActionPerformable: """ Default resolver that returns a performable designator with the resolved object description and the first entries from the lists of possible parameter. :return: A performable designator """ - return self.Action(self.object_designator_description.resolve(), self.arms[0]) + return OpenActionPerformable(self.object_designator_description.resolve(), self.arms[0]) class CloseAction(ActionDesignatorDescription): @@ -806,38 +361,6 @@ class CloseAction(ActionDesignatorDescription): Can currently not be used """ - @dataclasses.dataclass - class Action(ActionDesignatorDescription.Action): - object_designator: ObjectPart.Object - """ - Object designator describing the object that should be closed - """ - arm: str - """ - Arm that should be used for closing - """ - - @with_tree - def perform(self) -> Any: - GraspingAction.Action(self.arm, self.object_designator).perform() - ClosingMotion(self.object_designator, self.arm).resolve().perform() - - MoveGripperMotion("open", self.arm, allow_gripper_collision=True).resolve().perform() - - def to_sql(self) -> ORMCloseAction: - return ORMCloseAction(self.arm) - - def insert(self, session: sqlalchemy.orm.session.Session, *args, **kwargs) -> ORMCloseAction: - action = super().insert(session) - - op = self.object_designator.insert(session) - action.object_id = op.id - - session.add(action) - session.commit() - - return action - def __init__(self, object_designator_description: ObjectPart, arms: List[str], resolver=None): """ @@ -851,14 +374,14 @@ def __init__(self, object_designator_description: ObjectPart, arms: List[str], self.object_designator_description: ObjectPart = object_designator_description self.arms: List[str] = arms - def ground(self) -> Action: + def ground(self) -> CloseActionPerformable: """ Default resolver that returns a performable designator with the resolved object designator and the first entry from the list of possible arms. :return: A performable designator """ - return self.Action(self.object_designator_description.resolve(), self.arms[0]) + return CloseActionPerformable(self.object_designator_description.resolve(), self.arms[0]) class GraspingAction(ActionDesignatorDescription): @@ -866,51 +389,6 @@ class GraspingAction(ActionDesignatorDescription): Grasps an object described by the given Object Designator description """ - @dataclasses.dataclass - class Action(ActionDesignatorDescription.Action): - arm: str - """ - The arm that should be used to grasp - """ - object_desig: Union[ObjectDesignatorDescription.Object, ObjectPart.Object] - """ - Object Designator for the object that should be grasped - """ - - def perform(self) -> Any: - if isinstance(self.object_desig, ObjectPart.Object): - object_pose = self.object_desig.part_pose - else: - object_pose = self.object_desig.bullet_world_object.get_pose() - lt = LocalTransformer() - gripper_name = robot_description.get_tool_frame(self.arm) - - object_pose_in_gripper = lt.transform_pose(object_pose, - BulletWorld.robot.get_link_tf_frame(gripper_name)) - - pre_grasp = object_pose_in_gripper.copy() - pre_grasp.pose.position.x -= 0.1 - - MoveTCPMotion(pre_grasp, self.arm).resolve().perform() - MoveGripperMotion("open", self.arm).resolve().perform() - - MoveTCPMotion(object_pose, self.arm, allow_gripper_collision=True).resolve().perform() - MoveGripperMotion("close", self.arm, allow_gripper_collision=True).resolve().perform() - - def to_sql(self) -> ORMGraspingAction: - return ORMGraspingAction(self.arm) - - def insert(self, session: sqlalchemy.orm.session.Session, *args, **kwargs) -> ORMGraspingAction: - action = super().insert(session) - - od = self.object_desig.insert(session) - action.object_id = od.id - - session.add(action) - session.commit() - - return action - def __init__(self, arms: List[str], object_description: Union[ObjectDesignatorDescription, ObjectPart], resolver: Callable = None): """ @@ -925,11 +403,11 @@ def __init__(self, arms: List[str], object_description: Union[ObjectDesignatorDe self.arms: List[str] = arms self.object_description: ObjectDesignatorDescription = object_description - def ground(self) -> Action: + def ground(self) -> GraspingActionPerformable: """ Default resolver that takes the first element from the list of arms and the first solution for the object designator description ond returns it. :return: A performable action designator that contains specific arguments """ - return self.Action(self.arms[0], self.object_description.resolve()) + return GraspingActionPerformable(self.arms[0], self.object_description.resolve()) diff --git a/src/pycram/designators/actions/__init__.py b/src/pycram/designators/actions/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/src/pycram/designators/actions/actions.py b/src/pycram/designators/actions/actions.py new file mode 100644 index 000000000..73fbc1451 --- /dev/null +++ b/src/pycram/designators/actions/actions.py @@ -0,0 +1,594 @@ +import abc +import inspect + +import numpy as np +from tf import transformations +from typing_extensions import Union, Type +from ...designator import ActionDesignatorDescription +from ..motion_designator import * +from ...datastructures.pose import Pose +from ...datastructures.enums import Arms, Grasp +from ...task import with_tree +from dataclasses import dataclass, field +from ..location_designator import CostmapLocation +from ..object_designator import BelieveObject +# from ...bullet_world import BulletWorld +from ...helper import multiply_quaternions +from ...local_transformer import LocalTransformer +from ...orm.base import Pose as ORMPose +from ...orm.object_designator import Object as ORMObject +from ...orm.action_designator import Action as ORMAction +from ...plan_failures import ObjectUnfetchable, ReachabilityFailure +from ...robot_descriptions import robot_description +from ...orm.action_designator import (ParkArmsAction as ORMParkArmsAction, NavigateAction as ORMNavigateAction, + PickUpAction as ORMPickUpAction, PlaceAction as ORMPlaceAction, + MoveTorsoAction as ORMMoveTorsoAction, SetGripperAction as ORMSetGripperAction, + LookAtAction as ORMLookAtAction, DetectAction as ORMDetectAction, + TransportAction as ORMTransportAction, OpenAction as ORMOpenAction, + CloseAction as ORMCloseAction, GraspingAction as ORMGraspingAction, Action, + FaceAtAction as ORMFaceAtAction) + + +@dataclass +class ActionAbstract(ActionDesignatorDescription.Action, abc.ABC): + """Base class for performable actions.""" + orm_class: Type[ORMAction] = field(init=False, default=None) + """ + The ORM class that is used to insert this action into the database. Must be overwritten by every action in order to + be able to insert the action into the database. + """ + + @abc.abstractmethod + def perform(self) -> None: + """ + Perform the action. + + Will be overwritten by each action. + """ + pass + + def to_sql(self) -> Action: + """ + Convert this action to its ORM equivalent. + + Needs to be overwritten by an action if it didn't overwrite the orm_class attribute with its ORM equivalent. + + :return: An instance of the ORM equivalent of the action with the parameters set + """ + # get all class parameters (ignore inherited ones) + class_variables = {key: value for key, value in vars(self).items() + if key in inspect.getfullargspec(self.__init__).args} + + # get all orm class parameters (ignore inherited ones) + orm_class_variables = inspect.getfullargspec(self.orm_class.__init__).args + + # list of parameters that will be passed to the ORM class. If the name does not match the orm_class equivalent + # or if it is a type that needs to be inserted into the session manually, it will not be added to the list + parameters = [value for key, value in class_variables.items() if key in orm_class_variables + and not isinstance(value, (ObjectDesignatorDescription.Object, Pose))] + + return self.orm_class(*parameters) + + def insert(self, session: Session, **kwargs) -> Action: + """ + Insert this action into the database. + + Needs to be overwritten by an action if the action has attributes that do not exist in the orm class + equivalent. In that case, the attributes need to be inserted into the session manually. + + :param session: Session with a database that is used to add and commit the objects + :param kwargs: Possible extra keyword arguments + :return: The completely instanced ORM action that was inserted into the database + """ + + action = super().insert(session) + + # get all class parameters (ignore inherited ones) + class_variables = {key: value for key, value in vars(self).items() + if key in inspect.getfullargspec(self.__init__).args} + + # get all orm class parameters (ignore inherited ones) + orm_class_variables = inspect.getfullargspec(self.orm_class.__init__).args + + # loop through all class parameters and insert them into the session unless they are already added by the ORM + for key, value in class_variables.items(): + if key not in orm_class_variables: + variable = value.insert(session) + if isinstance(variable, ORMObject): + action.object = variable + elif isinstance(variable, ORMPose): + action.pose = variable + session.add(action) + + return action + + +@dataclass +class MoveTorsoActionPerformable(ActionAbstract): + """ + Move the torso of the robot up and down. + """ + + position: float + """ + Target position of the torso joint + """ + orm_class: Type[ActionAbstract] = field(init=False, default=ORMMoveTorsoAction) + + @with_tree + def perform(self) -> None: + MoveJointsMotion([robot_description.torso_joint], [self.position]).perform() + + +@dataclass +class SetGripperActionPerformable(ActionAbstract): + """ + Set the gripper state of the robot. + """ + + gripper: str + """ + The gripper that should be set + """ + motion: str + """ + The motion that should be set on the gripper + """ + orm_class: Type[ActionAbstract] = field(init=False, default=ORMSetGripperAction) + + @with_tree + def perform(self) -> None: + MoveGripperMotion(gripper=self.gripper, motion=self.motion).perform() + + +@dataclass +class ReleaseActionPerformable(ActionAbstract): + """ + Releases an Object from the robot. + + Note: This action can not ve used yet. + """ + + gripper: str + + object_designator: ObjectDesignatorDescription.Object + + def perform(self) -> None: + raise NotImplementedError + + +@dataclass +class GripActionPerformable(ActionAbstract): + """ + Grip an object with the robot. + + Note: This action can not be used yet. + """ + + gripper: str + object_designator: ObjectDesignatorDescription.Object + effort: float + + @with_tree + def perform(self) -> None: + raise NotImplementedError() + + +@dataclass +class ParkArmsActionPerformable(ActionAbstract): + """ + Park the arms of the robot. + """ + + arm: Arms + """ + Entry from the enum for which arm should be parked + """ + orm_class: Type[ActionAbstract] = field(init=False, default=ORMParkArmsAction) + + @with_tree + def perform(self) -> None: + # create the keyword arguments + kwargs = dict() + left_poses = None + right_poses = None + + # add park left arm if wanted + if self.arm in [Arms.LEFT, Arms.BOTH]: + kwargs["left_arm_config"] = "park" + left_poses = robot_description.get_static_joint_chain("left", kwargs["left_arm_config"]) + + # add park right arm if wanted + if self.arm in [Arms.RIGHT, Arms.BOTH]: + kwargs["right_arm_config"] = "park" + right_poses = robot_description.get_static_joint_chain("right", kwargs["right_arm_config"]) + + MoveArmJointsMotion(left_poses, right_poses).perform() + + +@dataclass +class PickUpActionPerformable(ActionAbstract): + """ + Let the robot pick up an object. + """ + + object_designator: ObjectDesignatorDescription.Object + """ + Object designator describing the object that should be picked up + """ + + arm: str + """ + The arm that should be used for pick up + """ + + grasp: str + """ + The grasp that should be used. For example, 'left' or 'right' + """ + + object_at_execution: Optional[ObjectDesignatorDescription.Object] = field(init=False) + """ + The object at the time this Action got created. It is used to be a static, information holding entity. It is + not updated when the BulletWorld object is changed. + """ + orm_class: Type[ActionAbstract] = field(init=False, default=ORMPickUpAction) + + @with_tree + def perform(self) -> None: + # Store the object's data copy at execution + self.object_at_execution = self.object_designator.frozen_copy() + robot = World.robot + # Retrieve object and robot from designators + object = self.object_designator.world_object + # Get grasp orientation and target pose + grasp = robot_description.grasps.get_orientation_for_grasp(self.grasp) + # oTm = Object Pose in Frame map + oTm = object.get_pose() + # Transform the object pose to the object frame, basically the origin of the object frame + mTo = object.local_transformer.transform_to_object_frame(oTm, object) + # Adjust the pose according to the special knowledge of the object designator + adjusted_pose = self.object_designator.special_knowledge_adjustment_pose(self.grasp, mTo) + # Transform the adjusted pose to the map frame + adjusted_oTm = object.local_transformer.transform_pose(adjusted_pose, "map") + # multiplying the orientation therefore "rotating" it, to get the correct orientation of the gripper + ori = multiply_quaternions([adjusted_oTm.orientation.x, adjusted_oTm.orientation.y, + adjusted_oTm.orientation.z, adjusted_oTm.orientation.w], + grasp) + + # Set the orientation of the object pose by grasp in MAP + adjusted_oTm.orientation.x = ori[0] + adjusted_oTm.orientation.y = ori[1] + adjusted_oTm.orientation.z = ori[2] + adjusted_oTm.orientation.w = ori[3] + + # prepose depending on the gripper (its annoying we have to put pr2_1 here tbh + # gripper_frame = "pr2_1/l_gripper_tool_frame" if self.arm == "left" else "pr2_1/r_gripper_tool_frame" + gripper_frame = robot.get_link_tf_frame(robot_description.get_tool_frame(self.arm)) + # First rotate the gripper, so the further calculations makes sense + tmp_for_rotate_pose = object.local_transformer.transform_pose(adjusted_oTm, gripper_frame) + tmp_for_rotate_pose.pose.position.x = 0 + tmp_for_rotate_pose.pose.position.y = 0 + tmp_for_rotate_pose.pose.position.z = -0.1 + gripper_rotate_pose = object.local_transformer.transform_pose(tmp_for_rotate_pose, "map") + + #Perform Gripper Rotate + # BulletWorld.current_bullet_world.add_vis_axis(gripper_rotate_pose) + # MoveTCPMotion(gripper_rotate_pose, self.arm).resolve().perform() + + oTg = object.local_transformer.transform_pose(adjusted_oTm, gripper_frame) + oTg.pose.position.x -= 0.1 # in x since this is how the gripper is oriented + prepose = object.local_transformer.transform_pose(oTg, "map") + + # Perform the motion with the prepose and open gripper + World.current_world.add_vis_axis(prepose) + MoveTCPMotion(prepose, self.arm, allow_gripper_collision=True).perform() + MoveGripperMotion(motion="open", gripper=self.arm).perform() + + # Perform the motion with the adjusted pose -> actual grasp and close gripper + World.current_world.add_vis_axis(adjusted_oTm) + MoveTCPMotion(adjusted_oTm, self.arm, allow_gripper_collision=True).perform() + adjusted_oTm.pose.position.z += 0.03 + MoveGripperMotion(motion="close", gripper=self.arm).perform() + tool_frame = robot_description.get_tool_frame(self.arm) + robot.attach(object, tool_frame) + + # Lift object + World.current_world.add_vis_axis(adjusted_oTm) + MoveTCPMotion(adjusted_oTm, self.arm, allow_gripper_collision=True).perform() + + # Remove the vis axis from the world + World.current_world.remove_vis_axis() + + +@dataclass +class PlaceActionPerformable(ActionAbstract): + """ + Places an Object at a position using an arm. + """ + + object_designator: ObjectDesignatorDescription.Object + """ + Object designator describing the object that should be place + """ + arm: str + """ + Arm that is currently holding the object + """ + target_location: Pose + """ + Pose in the world at which the object should be placed + """ + orm_class: Type[ActionAbstract] = field(init=False, default=ORMPlaceAction) + + @with_tree + def perform(self) -> None: + object_pose = self.object_designator.world_object.get_pose() + local_tf = LocalTransformer() + + # Transformations such that the target position is the position of the object and not the tcp + tcp_to_object = local_tf.transform_pose(object_pose, + World.robot.get_link_tf_frame( + robot_description.get_tool_frame(self.arm))) + target_diff = self.target_location.to_transform("target").inverse_times( + tcp_to_object.to_transform("object")).to_pose() + + MoveTCPMotion(target_diff, self.arm).perform() + MoveGripperMotion("open", self.arm).perform() + World.robot.detach(self.object_designator.world_object) + retract_pose = local_tf.transform_pose(target_diff, World.robot.get_link_tf_frame( + robot_description.get_tool_frame(self.arm))) + retract_pose.position.x -= 0.07 + MoveTCPMotion(retract_pose, self.arm).perform() + + +@dataclass +class NavigateActionPerformable(ActionAbstract): + """ + Navigates the Robot to a position. + """ + + target_location: Pose + """ + Location to which the robot should be navigated + """ + orm_class: Type[ActionAbstract] = field(init=False, default=ORMNavigateAction) + + @with_tree + def perform(self) -> None: + MoveMotion(self.target_location).perform() + + +@dataclass +class TransportActionPerformable(ActionAbstract): + """ + Transports an object to a position using an arm + """ + + object_designator: ObjectDesignatorDescription.Object + """ + Object designator describing the object that should be transported. + """ + arm: str + """ + Arm that should be used + """ + target_location: Pose + """ + Target Location to which the object should be transported + """ + orm_class: Type[ActionAbstract] = field(init=False, default=ORMTransportAction) + + @with_tree + def perform(self) -> None: + robot_desig = BelieveObject(names=[robot_description.name]) + ParkArmsActionPerformable(Arms.BOTH).perform() + pickup_loc = CostmapLocation(target=self.object_designator, reachable_for=robot_desig.resolve(), + reachable_arm=self.arm) + # Tries to find a pick-up posotion for the robot that uses the given arm + pickup_pose = None + for pose in pickup_loc: + if self.arm in pose.reachable_arms: + pickup_pose = pose + break + if not pickup_pose: + raise ObjectUnfetchable( + f"Found no pose for the robot to grasp the object: {self.object_designator} with arm: {self.arm}") + + NavigateActionPerformable(pickup_pose.pose).perform() + PickUpActionPerformable(self.object_designator, self.arm, "front").perform() + ParkArmsActionPerformable(Arms.BOTH).perform() + try: + place_loc = CostmapLocation(target=self.target_location, reachable_for=robot_desig.resolve(), + reachable_arm=self.arm).resolve() + except StopIteration: + raise ReachabilityFailure( + f"No location found from where the robot can reach the target location: {self.target_location}") + NavigateActionPerformable(place_loc.pose).perform() + PlaceActionPerformable(self.object_designator, self.arm, self.target_location).perform() + ParkArmsActionPerformable(Arms.BOTH).perform() + + +@dataclass +class LookAtActionPerformable(ActionAbstract): + """ + Lets the robot look at a position. + """ + + target: Pose + """ + Position at which the robot should look, given as 6D pose + """ + orm_class: Type[ActionAbstract] = field(init=False, default=ORMLookAtAction) + + @with_tree + def perform(self) -> None: + LookingMotion(target=self.target).perform() + + +@dataclass +class DetectActionPerformable(ActionAbstract): + """ + Detects an object that fits the object description and returns an object designator describing the object. + """ + + object_designator: ObjectDesignatorDescription.Object + """ + Object designator loosely describing the object, e.g. only type. + """ + orm_class: Type[ActionAbstract] = field(init=False, default=ORMDetectAction) + + @with_tree + def perform(self) -> None: + return DetectingMotion(object_type=self.object_designator.obj_type).perform() + + +@dataclass +class OpenActionPerformable(ActionAbstract): + """ + Opens a container like object + """ + + object_designator: ObjectPart.Object + """ + Object designator describing the object that should be opened + """ + arm: str + """ + Arm that should be used for opening the container + """ + orm_class: Type[ActionAbstract] = field(init=False, default=ORMOpenAction) + + @with_tree + def perform(self) -> None: + GraspingActionPerformable(self.arm, self.object_designator).perform() + OpeningMotion(self.object_designator, self.arm).perform() + + MoveGripperMotion("open", self.arm, allow_gripper_collision=True).perform() + + +@dataclass +class CloseActionPerformable(ActionAbstract): + """ + Closes a container like object. + """ + + object_designator: ObjectPart.Object + """ + Object designator describing the object that should be closed + """ + arm: str + """ + Arm that should be used for closing + """ + orm_class: Type[ActionAbstract] = field(init=False, default=ORMCloseAction) + + @with_tree + def perform(self) -> None: + GraspingActionPerformable(self.arm, self.object_designator).perform() + ClosingMotion(self.object_designator, self.arm).perform() + + MoveGripperMotion("open", self.arm, allow_gripper_collision=True).perform() + + +@dataclass +class GraspingActionPerformable(ActionAbstract): + """ + Grasps an object described by the given Object Designator description + """ + + arm: str + """ + The arm that should be used to grasp + """ + object_desig: Union[ObjectDesignatorDescription.Object, ObjectPart.Object] + """ + Object Designator for the object that should be grasped + """ + orm_class: Type[ActionAbstract] = field(init=False, default=ORMGraspingAction) + + @with_tree + def perform(self) -> None: + if isinstance(self.object_desig, ObjectPart.Object): + object_pose = self.object_desig.part_pose + else: + object_pose = self.object_desig.world_object.get_pose() + lt = LocalTransformer() + gripper_name = robot_description.get_tool_frame(self.arm) + + object_pose_in_gripper = lt.transform_pose(object_pose, + World.robot.get_link_tf_frame(gripper_name)) + + pre_grasp = object_pose_in_gripper.copy() + pre_grasp.pose.position.x -= 0.1 + + MoveTCPMotion(pre_grasp, self.arm).perform() + MoveGripperMotion("open", self.arm).perform() + + MoveTCPMotion(object_pose, self.arm, allow_gripper_collision=True).perform() + MoveGripperMotion("close", self.arm, allow_gripper_collision=True).perform() + + +@dataclass +class FaceAtPerformable(ActionAbstract): + """ + Turn the robot chassis such that is faces the ``pose`` and after that perform a look at action. + """ + + pose: Pose + """ + The pose to face + """ + + orm_class = ORMFaceAtAction + + @with_tree + def perform(self) -> None: + # get the robot position + robot_position = World.robot.pose + + # calculate orientation for robot to face the object + angle = np.arctan2(robot_position.position.y - self.pose.position.y, + robot_position.position.x - self.pose.position.x) + np.pi + orientation = list(transformations.quaternion_from_euler(0, 0, angle, axes="sxyz")) + + # create new robot pose + new_robot_pose = Pose(robot_position.position_as_list(), orientation) + + # turn robot + NavigateActionPerformable(new_robot_pose).perform() + + # look at target + LookAtActionPerformable(self.pose).perform() + + +@dataclass +class MoveAndPickUpPerformable(ActionAbstract): + """ + Navigate to `standing_position`, then turn towards the object and pick it up. + """ + + standing_position: Pose + """ + The pose to stand before trying to pick up the object + """ + + object_designator: ObjectDesignatorDescription.Object + """ + The object to pick up + """ + + arm: Arms + """ + The arm to use + """ + + grasp: Grasp + """ + The grasp to use + """ + + def perform(self): + NavigateActionPerformable(self.standing_position).perform() + FaceAtPerformable(self.object_designator.pose).perform() + PickUpActionPerformable(self.object_designator, self.arm, self.grasp).perform() diff --git a/src/pycram/designators/location_designator.py b/src/pycram/designators/location_designator.py index 1edb9d17d..13f5e8e2c 100644 --- a/src/pycram/designators/location_designator.py +++ b/src/pycram/designators/location_designator.py @@ -1,20 +1,17 @@ import dataclasses -import time -from typing import List, Tuple, Union, Iterable, Optional, Callable +from typing_extensions import List, Union, Iterable, Optional, Callable from .object_designator import ObjectDesignatorDescription, ObjectPart -from ..bullet_world import Object, BulletWorld, Use_shadow_world -from ..bullet_world_reasoning import link_pose_for_joint_config -from ..designator import Designator, DesignatorError, LocationDesignatorDescription +from ..world import World, UseProspectionWorld +from ..world_reasoning import link_pose_for_joint_config +from ..designator import DesignatorError, LocationDesignatorDescription from ..costmaps import OccupancyCostmap, VisibilityCostmap, SemanticCostmap, GaussianCostmap from ..robot_descriptions import robot_description -from ..enums import JointType +from ..datastructures.enums import JointType from ..helper import transform -from ..plan_failures import EnvironmentManipulationImpossible -from ..pose_generator_and_validator import pose_generator, visibility_validator, reachability_validator, \ - generate_orientation +from ..pose_generator_and_validator import PoseGenerator, visibility_validator, reachability_validator from ..robot_description import ManipulatorDescription -from ..pose import Pose +from ..datastructures.pose import Pose class Location(LocationDesignatorDescription): @@ -160,7 +157,7 @@ def __iter__(self): max_height = list(robot_description.cameras.values())[0].max_height # This ensures that the costmaps always get a position as their origin. if isinstance(self.target, ObjectDesignatorDescription.Object): - target_pose = self.target.bullet_world_object.get_pose() + target_pose = self.target.world_object.get_pose() else: target_pose = self.target.copy() @@ -168,7 +165,7 @@ def __iter__(self): ground_pose = Pose(target_pose.position_as_list()) ground_pose.position.z = 0 - occupancy = OccupancyCostmap(0.4, False, 200, 0.02, ground_pose) + occupancy = OccupancyCostmap(0.32, False, 200, 0.02, ground_pose) final_map = occupancy if self.reachable_for: @@ -179,17 +176,16 @@ def __iter__(self): final_map += visible if self.visible_for or self.reachable_for: - robot_object = self.visible_for.bullet_world_object if self.visible_for else self.reachable_for.bullet_world_object - test_robot = BulletWorld.current_bullet_world.get_shadow_object(robot_object) + robot_object = self.visible_for.world_object if self.visible_for else self.reachable_for.world_object + test_robot = World.current_world.get_prospection_object_for_object(robot_object) - with Use_shadow_world(): - - for maybe_pose in pose_generator(final_map, number_of_samples=600): + with UseProspectionWorld(): + for maybe_pose in PoseGenerator(final_map, number_of_samples=600): res = True arms = None if self.visible_for: res = res and visibility_validator(maybe_pose, test_robot, target_pose, - BulletWorld.current_bullet_world) + World.current_world) if self.reachable_for: hand_links = [] for name, chain in robot_description.chains.items(): @@ -229,7 +225,7 @@ def __init__(self, handle_desig: ObjectPart.Object, robot_desig: ObjectDesignato """ super().__init__(resolver) self.handle: ObjectPart.Object = handle_desig - self.robot: ObjectDesignatorDescription.Object = robot_desig.bullet_world_object + self.robot: ObjectDesignatorDescription.Object = robot_desig.world_object def ground(self) -> Location: """ @@ -256,28 +252,28 @@ def __iter__(self) -> Location: final_map = occupancy + gaussian - test_robot = BulletWorld.current_bullet_world.get_shadow_object(self.robot) + test_robot = World.current_world.get_prospection_object_for_object(self.robot) # Find a Joint of type prismatic which is above the handle in the URDF tree - container_joint = self.handle.bullet_world_object.find_joint_above(self.handle.name, JointType.PRISMATIC) + container_joint = self.handle.world_object.find_joint_above_link(self.handle.name, JointType.PRISMATIC) - init_pose = link_pose_for_joint_config(self.handle.bullet_world_object, { - container_joint: self.handle.bullet_world_object.get_joint_limits(container_joint)[0]}, + init_pose = link_pose_for_joint_config(self.handle.world_object, { + container_joint: self.handle.world_object.get_joint_limits(container_joint)[0]}, self.handle.name) # Calculate the pose the handle would be in if the drawer was to be fully opened - goal_pose = link_pose_for_joint_config(self.handle.bullet_world_object, { - container_joint: self.handle.bullet_world_object.get_joint_limits(container_joint)[1] - 0.05}, + goal_pose = link_pose_for_joint_config(self.handle.world_object, { + container_joint: self.handle.world_object.get_joint_limits(container_joint)[1] - 0.05}, self.handle.name) # Handle position for calculating rotation of the final pose - half_pose = link_pose_for_joint_config(self.handle.bullet_world_object, { - container_joint: self.handle.bullet_world_object.get_joint_limits(container_joint)[1] / 1.5}, + half_pose = link_pose_for_joint_config(self.handle.world_object, { + container_joint: self.handle.world_object.get_joint_limits(container_joint)[1] / 1.5}, self.handle.name) - with Use_shadow_world(): - for maybe_pose in pose_generator(final_map, number_of_samples=600, - orientation_generator=lambda p, o: generate_orientation(p, half_pose)): + with UseProspectionWorld(): + for maybe_pose in PoseGenerator(final_map, number_of_samples=600, + orientation_generator=lambda p, o: PoseGenerator.generate_orientation(p, half_pose)): hand_links = [] for name, chain in robot_description.chains.items(): @@ -335,11 +331,11 @@ def __iter__(self): :yield: An instance of SemanticCostmapLocation.Location with the found valid position of the Costmap. """ - sem_costmap = SemanticCostmap(self.part_of.bullet_world_object, self.urdf_link_name) + sem_costmap = SemanticCostmap(self.part_of.world_object, self.urdf_link_name) height_offset = 0 if self.for_object: - min, max = self.for_object.bullet_world_object.get_AABB() - height_offset = (max[2] - min[2]) / 2 - for maybe_pose in pose_generator(sem_costmap): + min_p, max_p = self.for_object.world_object.get_axis_aligned_bounding_box().get_min_max_points() + height_offset = (max_p.z - min_p.z) / 2 + for maybe_pose in PoseGenerator(sem_costmap): maybe_pose.position.z += height_offset yield self.Location(maybe_pose) diff --git a/src/pycram/designators/motion_designator.py b/src/pycram/designators/motion_designator.py index c6535a3a6..36c8f1402 100644 --- a/src/pycram/designators/motion_designator.py +++ b/src/pycram/designators/motion_designator.py @@ -1,691 +1,383 @@ -import dataclasses +from abc import ABC, abstractmethod +from dataclasses import dataclass from sqlalchemy.orm import Session from .object_designator import ObjectDesignatorDescription, ObjectPart, RealObject -from ..bullet_world import Object, BulletWorld +from ..world import World +from ..world_concepts.world_object import Object from ..designator import DesignatorError +from ..orm.base import ProcessMetaData from ..plan_failures import PerceptionObjectNotFound from ..process_module import ProcessModuleManager -from ..robot_descriptions import robot_description -from ..designator import MotionDesignatorDescription -from ..orm.motion_designator import (MoveMotion as ORMMoveMotion, AccessingMotion as ORMAccessingMotion, +from ..orm.motion_designator import (MoveMotion as ORMMoveMotion, MoveTCPMotion as ORMMoveTCPMotion, LookingMotion as ORMLookingMotion, MoveGripperMotion as ORMMoveGripperMotion, DetectingMotion as ORMDetectingMotion, - WorldStateDetectingMotion as ORMWorldStateDetectingMotion, - OpeningMotion as ORMOpeningMotion, ClosingMotion as ORMClosingMotion) + OpeningMotion as ORMOpeningMotion, ClosingMotion as ORMClosingMotion, + Motion as ORMMotionDesignator) +from ..datastructures.enums import ObjectType -from typing import List, Dict, Callable, Optional -from ..pose import Pose +from typing_extensions import Dict, Optional, get_type_hints, get_args, get_origin +from ..datastructures.pose import Pose from ..task import with_tree -class MoveMotion(MotionDesignatorDescription): - """ - Moves the robot to a designated location - """ +@dataclass +class BaseMotion(ABC): - @dataclasses.dataclass - class Motion(MotionDesignatorDescription.Motion): - # cmd: str - target: Pose + @abstractmethod + def perform(self): """ - Location to which the robot should be moved + Passes this designator to the process module for execution. Will be overwritten by each motion. """ + pass + # return ProcessModule.perform(self) - @with_tree - def perform(self): - pm_manager = ProcessModuleManager.get_manager() - return pm_manager.navigate().execute(self) - # return ProcessModule.perform(self) - - def to_sql(self) -> ORMMoveMotion: - return ORMMoveMotion() - - def insert(self, session, *args, **kwargs) -> ORMMoveMotion: - motion = super().insert(session) - - pose = self.target.insert(session) - motion.pose_id = pose.id - - session.add(motion) - session.commit() - - return motion - - def __init__(self, target: Pose, resolver: Callable = None): + @abstractmethod + def to_sql(self) -> ORMMotionDesignator: """ - Navigates to robot to the given target + Create an ORM object that corresponds to this description. Will be overwritten by each motion. - :param target: Position and Orientation of the navigation goal - :param resolver: A method with which to resolve the description + :return: The created ORM object. """ - super().__init__(resolver) - self.cmd: str = "navigate" - self.target: Pose = target + return ORMMotionDesignator() - def ground(self) -> Motion: + @abstractmethod + def insert(self, session: Session, *args, **kwargs) -> ORMMotionDesignator: """ - Default resolver for moving the robot, this resolver simply creates the motion designator from the input of the - designator description. + Add and commit this and all related objects to the session. + Auto-Incrementing primary keys and foreign keys have to be filled by this method. - :return: A resolved and performable motion designator + :param session: Session with a database that is used to add and commit the objects + :param args: Possible extra arguments + :param kwargs: Possible extra keyword arguments + :return: The completely instanced ORM motion. """ - return self.Motion(self.cmd, self.target) - - -class PickUpMotion(MotionDesignatorDescription): - """ - Lets the robot pick up a specific object - """ + metadata = ProcessMetaData().insert(session) - @dataclasses.dataclass - class Motion(MotionDesignatorDescription.Motion): - # cmd: str - object_desig: ObjectDesignatorDescription.Object - """ - Object designator describing the object to be picked up - """ - arm: str - """ - Arm that should be used for picking up the object - """ - grasp: str - """ - From which direction the object should be grasped, e.g. 'left', 'front', etc. - """ + motion = self.to_sql() + motion.process_metadata = metadata - @with_tree - def perform(self): - pm_manager = ProcessModuleManager.get_manager() - return pm_manager.pick_up().execute(self) + return motion - def __init__(self, object_desig: ObjectDesignatorDescription.Object, grasp: str = None, arm: str = None, - resolver: Callable = None): + def __post_init__(self): """ - Motion designator implementation of the robot picking up an object. The robot will move its arm to the position - of the object and attach the object to the gripper of the robot. - - :param object_desig: Object designator of the object to be picked up - :param grasp: From which direction the object should be picked up - :param arm: Which arm should be used for picking up - :param resolver: Alternative resolver that produces a resolved and performable motion deisgnator + Checks if types are missing or wrong """ - super().__init__(resolver) - self.cmd: str = 'pick-up' - self.object_desig: ObjectDesignatorDescription.Object = object_desig - self.arm: Optional[str] = arm - self.grasp: Optional[str] = grasp + right_types = get_type_hints(self) + attributes = self.__dict__.copy() - def ground(self): - """ - Default resolver for picking up. Checks if all parameter are present and will fill missing parameter. Optional - parameter ``arm`` and ``grasp`` will default to ``'left'``. + missing = [] + wrong_type = {} + current_type = {} - :return: A resolved motion designator that can be performed - """ - arm = "left" if not self.arm else self.arm - grasp = "left" if not self.grasp else self.grasp - return self.Motion(self.cmd, self.object_desig, arm, grasp) + for k in attributes.keys(): + attribute = attributes[k] + attribute_type = type(attributes[k]) + right_type = right_types[k] + types = get_args(right_type) + if attribute is None: + if not any([x is type(None) for x in get_args(right_type)]): + missing.append(k) + elif attribute_type is not right_type: + if attribute_type not in types: + if attribute_type not in [get_origin(x) for x in types if x is not type(None)]: + wrong_type[k] = right_types[k] + current_type[k] = attribute_type + if missing != [] or wrong_type != {}: + raise ResolutionError(missing, wrong_type, current_type, self.__class__) -class PlaceMotion(MotionDesignatorDescription): +@dataclass +class MoveMotion(BaseMotion): """ - Lets the robot place an object that was picked up + Moves the robot to a designated location """ - @dataclasses.dataclass - class Motion(MotionDesignatorDescription.Motion): - # cmd: str - object: ObjectDesignatorDescription.Object - """ - Object designator of the object to be placed - """ - target: Pose - """ - Pose at which the object should be placed - """ - arm: str - """ - Arm that is currently holding the object - """ + target: Pose + """ + Location to which the robot should be moved + """ - @with_tree - def perform(self): - pm_manager = ProcessModuleManager.get_manager() - return pm_manager.place().execute(self) + @with_tree + def perform(self): + pm_manager = ProcessModuleManager.get_manager() + return pm_manager.navigate().execute(self) + # return ProcessModule.perform(self) - def __init__(self, object_desig: ObjectDesignatorDescription.Object, target: Pose, - arm: Optional[str] = None, resolver: Optional[Callable] = None): - """ - Places the object in object_desig at the position in target. If an arm is given then the arm is used, otherwise - arm defaults to ``'left'`` + def to_sql(self) -> ORMMoveMotion: + return ORMMoveMotion() - :param object_desig: Object designator describing the object to be placed - :param target: The target pose on which to place the object - :param arm: An arm to use for placing - :param resolver: An alternative resolver that resolves the list of parameters to a resolved motion designator. - """ - super().__init__(resolver) - self.cmd: str = 'place' - self.object_desig: ObjectDesignatorDescription.Object = object_desig - self.target: Pose = target - self.arm: str = arm + def insert(self, session, *args, **kwargs) -> ORMMoveMotion: + motion = super().insert(session) + pose = self.target.insert(session) + motion.pose = pose + session.add(motion) - def ground(self) -> Motion: - """ - Default resolver for placing an object which returns a resolved motion designator for the input. If no arm is - given then the arm parameter will default to ``'left'``. - - :return: A resolved performable motion designator - """ - arm = "left" if not self.arm else self.arm - return self.Motion(self.cmd, self.object_desig, self.target, arm) + return motion -class MoveTCPMotion(MotionDesignatorDescription): +@dataclass +class MoveTCPMotion(BaseMotion): """ Moves the Tool center point (TCP) of the robot """ - @dataclasses.dataclass - class Motion(MotionDesignatorDescription.Motion): - # cmd: str - target: Pose - """ - Target pose to which the TCP should be moved - """ - arm: str - """ - Arm with the TCP that should be moved to the target - """ - allow_gripper_collision: bool - """ - If the gripper can collide with something - """ - - @with_tree - def perform(self): - pm_manager = ProcessModuleManager.get_manager() - return pm_manager.move_tcp().execute(self) - - def to_sql(self) -> ORMMoveTCPMotion: - return ORMMoveTCPMotion(self.arm, self.allow_gripper_collision) - - def insert(self, session: Session, *args, **kwargs) -> ORMMoveTCPMotion: - motion = super().insert(session) + target: Pose + """ + Target pose to which the TCP should be moved + """ + arm: str + """ + Arm with the TCP that should be moved to the target + """ + allow_gripper_collision: Optional[bool] = None + """ + If the gripper can collide with something + """ - pose = self.target.insert(session) - motion.pose_id = pose.id + @with_tree + def perform(self): + pm_manager = ProcessModuleManager.get_manager() + return pm_manager.move_tcp().execute(self) - session.add(motion) - session.commit() + def to_sql(self) -> ORMMoveTCPMotion: + return ORMMoveTCPMotion(self.arm, self.allow_gripper_collision) - return motion + def insert(self, session: Session, *args, **kwargs) -> ORMMoveTCPMotion: + motion = super().insert(session) + pose = self.target.insert(session) + motion.pose = pose + session.add(motion) - def __init__(self, target: Pose, arm: Optional[str] = None, - resolver: Optional[Callable] = None, allow_gripper_collision: Optional[bool] = None): - """ - Moves the TCP of the given arm to the given target pose. + return motion - :param target: Target pose for the TCP - :param arm: Arm that should be moved - :param resolver: Alternative resolver which returns a resolved motion designator - :param allow_gripper_collision: If the gripper should be allowed to collide with something, only used on the real robot - """ - super().__init__(resolver) - self.cmd: str = 'move-tcp' - self.target: Pose = target - self.arm: Optional[str] = arm - self.allow_gripper_collision = allow_gripper_collision - def ground(self) -> Motion: - """ - Default resolver that returns a resolved motion designator, arm defaults to ``'left'`` if no arm is given. - - :return: A resolved motion designator - """ - arm = "left" if not self.arm else self.arm - return self.Motion(self.cmd, self.target, arm, self.allow_gripper_collision) - - -class LookingMotion(MotionDesignatorDescription): +@dataclass +class LookingMotion(BaseMotion): """ Lets the robot look at a point """ + target: Pose - @dataclasses.dataclass - class Motion(MotionDesignatorDescription.Motion): - # cmd: str - target: Pose - - @with_tree - def perform(self): - pm_manager = ProcessModuleManager.get_manager() - return pm_manager.looking().execute(self) - - def to_sql(self) -> ORMLookingMotion: - return ORMLookingMotion() - - def insert(self, session: Session, *args, **kwargs) -> ORMLookingMotion: - motion = super().insert(session) - - pose = self.target.insert(session) - motion.pose_id = pose.id - - session.add(motion) - session.commit() - - return motion + @with_tree + def perform(self): + pm_manager = ProcessModuleManager.get_manager() + return pm_manager.looking().execute(self) - def __init__(self, target: Optional[Pose] = None, object: Optional[ObjectDesignatorDescription.Object] = None, - resolver: Optional[Callable] = None): - """ - Moves the head of the robot such that the camera points towards the given location. If ``target`` and ``object`` - are given ``target`` will be preferred. - - :param target: Position and orientation of the target - :param object: An Object in the BulletWorld - :param resolver: Alternative resolver that returns a resolved motion designator for parameter - """ - super().__init__(resolver) - self.cmd: str = 'looking' - self.target: Optional[Pose] = target - self.object: Object = object.bullet_world_object if object else object + def to_sql(self) -> ORMLookingMotion: + return ORMLookingMotion() - def ground(self) -> Motion: - """ - Default resolver for looking, chooses which pose to take if ``target`` and ``object`` are given. If both are given - ``target`` will be preferred. + def insert(self, session: Session, *args, **kwargs) -> ORMLookingMotion: + motion = super().insert(session) + pose = self.target.insert(session) + motion.pose = pose + session.add(motion) - :return: A resolved motion designator - """ - if not self.target and self.object: - self.target = self.object.get_pose() - return self.Motion(self.cmd, self.target) + return motion -class MoveGripperMotion(MotionDesignatorDescription): +@dataclass +class MoveGripperMotion(BaseMotion): """ Opens or closes the gripper """ - @dataclasses.dataclass - class Motion(MotionDesignatorDescription.Motion): - # cmd: str - motion: str - """ - Motion that should be performed, either 'open' or 'close' - """ - gripper: str - """ - Name of the gripper that should be moved - """ - allow_gripper_collision: bool - """ - If the gripper is allowed to collide with something - """ - - @with_tree - def perform(self): - pm_manager = ProcessModuleManager.get_manager() - return pm_manager.move_gripper().execute(self) - - def to_sql(self) -> ORMMoveGripperMotion: - return ORMMoveGripperMotion(self.motion, self.gripper, self.allow_gripper_collision) - - def insert(self, session: Session, *args, **kwargs) -> ORMMoveGripperMotion: - motion = super().insert(session) - - session.add(motion) - session.commit() - return motion + motion: str + """ + Motion that should be performed, either 'open' or 'close' + """ + gripper: str + """ + Name of the gripper that should be moved + """ + allow_gripper_collision: Optional[bool] = None + """ + If the gripper is allowed to collide with something + """ - def __init__(self, motion: str, gripper: str, resolver: Optional[Callable] = None, - allow_gripper_collision: Optional[bool] = None): - """ - Moves the gripper into a given position. + @with_tree + def perform(self): + pm_manager = ProcessModuleManager.get_manager() + return pm_manager.move_gripper().execute(self) - :param motion: Which motion to perform - :param gripper: Name of the gripper that should be moved - :param resolver: An alternative resolver that resolves the parameter to a motion designator - """ - super().__init__(resolver) - self.cmd: str = 'move-gripper' - self.motion: str = motion - self.gripper: str = gripper - self.allow_gripper_collision = allow_gripper_collision + def to_sql(self) -> ORMMoveGripperMotion: + return ORMMoveGripperMotion(self.motion, self.gripper, self.allow_gripper_collision) - def ground(self) -> Motion: - """ - Default resolver for moving the gripper, simply returns a resolved motion designator + def insert(self, session: Session, *args, **kwargs) -> ORMMoveGripperMotion: + motion = super().insert(session) + session.add(motion) - :return: A resolved motion designator - """ - return self.Motion(self.cmd, self.motion, self.gripper, self.allow_gripper_collision) + return motion -class DetectingMotion(MotionDesignatorDescription): +@dataclass +class DetectingMotion(BaseMotion): """ Tries to detect an object in the FOV of the robot """ - @dataclasses.dataclass - class Motion(MotionDesignatorDescription.Motion): - # cmd: str - object_type: str - """ - Type of the object that should be detected - """ + object_type: ObjectType + """ + Type of the object that should be detected + """ - @with_tree - def perform(self): - pm_manager = ProcessModuleManager.get_manager() - bullet_world_object = pm_manager.detecting().execute(self) - if not bullet_world_object: - raise PerceptionObjectNotFound( - f"Could not find an object with the type {self.object_type} in the FOV of the robot") - if ProcessModuleManager.execution_type == "real": - return RealObject.Object(bullet_world_object.name, bullet_world_object.type, - bullet_world_object, bullet_world_object.get_pose()) - - return ObjectDesignatorDescription.Object(bullet_world_object.name, bullet_world_object.type, - bullet_world_object) - - def to_sql(self) -> ORMDetectingMotion: - return ORMDetectingMotion(self.object_type) - - def insert(self, session: Session, *args, **kwargs) -> ORMDetectingMotion: - motion = super().insert(session) - session.add(motion) - session.commit() - return motion - - def __init__(self, object_type: str, resolver: Optional[Callable] = None): - """ - Checks for every object in the FOV of the robot if it fits the given object type. If the types match an object - designator describing the object will be returned. + @with_tree + def perform(self): + pm_manager = ProcessModuleManager.get_manager() + world_object = pm_manager.detecting().execute(self) + if not world_object: + raise PerceptionObjectNotFound( + f"Could not find an object with the type {self.object_type} in the FOV of the robot") + if ProcessModuleManager.execution_type == "real": + return RealObject.Object(world_object.name, world_object.obj_type, + world_object, world_object.get_pose()) - :param object_type: Type of the object which should be detected - :param resolver: An alternative resolver which returns a resolved motion designator - """ - super().__init__(resolver) - self.cmd: str = 'detecting' - self.object_type: str = object_type + return ObjectDesignatorDescription.Object(world_object.name, world_object.obj_type, + world_object) - def ground(self) -> Motion: - """ - Default resolver for detecting, simply returns a resolver motion designator without checking. + def to_sql(self) -> ORMDetectingMotion: + return ORMDetectingMotion(self.object_type) - :return: A resolved motion designator - """ - return self.Motion(self.cmd, self.object_type) + def insert(self, session: Session, *args, **kwargs) -> ORMDetectingMotion: + motion = super().insert(session) + session.add(motion) + + return motion -class MoveArmJointsMotion(MotionDesignatorDescription): +@dataclass +class MoveArmJointsMotion(BaseMotion): """ Moves the joints of each arm into the given position """ - @dataclasses.dataclass - class Motion(MotionDesignatorDescription.Motion): - # cmd: str - left_arm_poses: Dict[str, float] - """ - Target positions for the left arm joints - """ - right_arm_poses: Dict[str, float] - """ - Target positions for the right arm joints - """ - - def perform(self): - pm_manager = ProcessModuleManager.get_manager() - return pm_manager.move_arm_joints().execute(self) - - def __init__(self, left_arm_config: Optional[str] = None, right_arm_config: Optional[str] = None, - left_arm_poses: Optional[dict] = None, right_arm_poses: Optional[dict] = None, - resolver: Optional[Callable] = None): - """ - Moves the arm joints, target positions can be either be pre-defined configurations (like 'park') or a dictionary - with joint names as keys and joint positions as values. If a configuration and a dictionary are given the - dictionary will be preferred. - - :param left_arm_config: Target configuration for the left arm - :param right_arm_config: Target configuration for the right arm - :param left_arm_poses: Target Dict for the left arm - :param right_arm_poses: Target Dict for the right arm - :param resolver: An alternative resolver that returns a resolved motion designator for the given parameters. - """ - super().__init__(resolver) - self.cmd = 'move-arm-joints' - self.left_arm_config: str = left_arm_config - self.right_arm_config: str = right_arm_config - self.left_arm_poses: Dict[str, float] = left_arm_poses - self.right_arm_poses: Dict[str, float] = right_arm_poses - - def ground(self) -> Motion: - """ - Default resolver for moving the arms, returns a resolved motion designator containing the target positions for - the left and right arm joints. + left_arm_poses: Optional[Dict[str, float]] = None + """ + Target positions for the left arm joints + """ + right_arm_poses: Optional[Dict[str, float]] = None + """ + Target positions for the right arm joints + """ - :return: A resolved and performable motion designator - """ - left_poses = None - right_poses = None + def perform(self): + pm_manager = ProcessModuleManager.get_manager() + return pm_manager.move_arm_joints().execute(self) - if self.left_arm_poses: - left_poses = self.left_arm_poses - elif self.left_arm_config: - left_poses = robot_description.get_static_joint_chain("left", self.left_arm_config) + def to_sql(self) -> ORMMotionDesignator: + pass - if self.right_arm_poses: - right_poses = self.right_arm_poses - elif self.right_arm_config: - right_poses = robot_description.get_static_joint_chain("right", self.right_arm_config) - return self.Motion(self.cmd, left_poses, right_poses) + def insert(self, session: Session, *args, **kwargs) -> ORMMotionDesignator: + pass -class WorldStateDetectingMotion(MotionDesignatorDescription): +@dataclass +class WorldStateDetectingMotion(BaseMotion): """ Detects an object based on the world state. """ - @dataclasses.dataclass - class Motion(MotionDesignatorDescription.Motion): - # cmd: str - object_type: str - """ - Object type that should be detected - """ - def perform(self): - pm_manager = ProcessModuleManager.get_manager() - return pm_manager.world_state_detecting().execute(self) + object_type: ObjectType + """ + Object type that should be detected + """ - def __init__(self, object_type: str, resolver: Optional[Callable] = None): - """ - Tries to find an object using the belief state (BulletWorld), if there is an object in the belief state matching - the given object type an object designator will be returned. + def perform(self): + pm_manager = ProcessModuleManager.get_manager() + return pm_manager.world_state_detecting().execute(self) - :param object_type: The object type which should be detected - :param resolver: An alternative resolver that returns a resolved motion designator for the input parameter - """ - super().__init__(resolver) - self.cmd: str = 'world-state-detecting' - self.object_type: str = object_type + def to_sql(self) -> ORMMotionDesignator: + pass - def ground(self) -> Motion: - """ - Default resolver for world state detecting which simply returns a resolved motion designator for the input - parameter. - - :return: A resolved motion designator - """ - return self.Motion(self.cmd, self.object_type) + def insert(self, session: Session, *args, **kwargs) -> ORMMotionDesignator: + pass -class MoveJointsMotion(MotionDesignatorDescription): +@dataclass +class MoveJointsMotion(BaseMotion): """ Moves any joint on the robot """ - @dataclasses.dataclass - class Motion(MotionDesignatorDescription.Motion): - # cmd: str - names: list - """ - List of joint names that should be moved - """ - positions: list - """ - Target positions of joints, should correspond to the list of names - """ - - def perform(self): - pm_manager = ProcessModuleManager.get_manager() - return pm_manager.move_joints().execute(self) - def __init__(self, names: List[str], positions: List[float], resolver: Optional[Callable] = None): - """ - Moves the joints given by the list of names to the positions given by the list of positions. The index of a - joint name should correspond to the index of the target position. + names: list + """ + List of joint names that should be moved + """ + positions: list + """ + Target positions of joints, should correspond to the list of names + """ - :param names: List of joint names that should be moved - :param positions: List of joint positions that the joints should be moved in - :param resolver: An alternative resolver that resolves the input parameters to a performable motion designator. - """ - super().__init__(resolver) - self.cmd: str = "move-joints" - self.names: List[str] = names - self.positions: List[float] = positions + def perform(self): + pm_manager = ProcessModuleManager.get_manager() + return pm_manager.move_joints().execute(self) - def ground(self) -> Motion: - """ - Default resolver for move joints, checks if the length of both list match and checks if the target positions are - within the joint limits as stated in the URDF. + def to_sql(self) -> ORMMotionDesignator: + pass - :return: A resolved motion designator - """ - if len(self.names) != len(self.positions): - raise DesignatorError("[Motion Designator][Move Joints] The length of names and positions does not match") - for i in range(len(self.names)): - lower, upper = BulletWorld.robot.get_joint_limits(self.names[i]) - if self.positions[i] < lower or self.positions[i] > upper: - raise DesignatorError( - f"[Motion Designator][Move Joints] The given configuration for the Joint {self.names[i]} violates its limits") - return self.Motion(self.cmd, self.names, self.positions) + def insert(self, session: Session, *args, **kwargs) -> ORMMotionDesignator: + pass -class OpeningMotion(MotionDesignatorDescription): +@dataclass +class OpeningMotion(BaseMotion): """ Designator for opening container """ - @dataclasses.dataclass - class Motion(MotionDesignatorDescription.Motion): - # cmd: str - object_part: ObjectPart.Object - """ - Object designator for the drawer handle - """ - arm: str - """ - Arm that should be used - """ - - @with_tree - def perform(self): - pm_manager = ProcessModuleManager.get_manager() - return pm_manager.open().execute(self) - - def to_sql(self) -> ORMOpeningMotion: - return ORMOpeningMotion(self.arm) - - def insert(self, session: Session, *args, **kwargs) -> ORMOpeningMotion: - motion = super().insert(session) - - op = self.object_part.insert(session) - motion.object_id = op.id - - session.add(motion) - session.commit() - - return motion + object_part: ObjectPart.Object + """ + Object designator for the drawer handle + """ + arm: str + """ + Arm that should be used + """ - def __init__(self, object_part: ObjectPart.Object, arm: str, resolver: Optional[Callable] = None): - """ - Lets the robot open a container specified by the given parameter. This motion designator assumes that the handle - is already grasped. + @with_tree + def perform(self): + pm_manager = ProcessModuleManager.get_manager() + return pm_manager.open().execute(self) - :param object_part: Object designator describing the handle of the drawer - :param arm: Arm that should be used - :param resolver: An alternative resolver - """ - super().__init__(resolver) - self.cmd: str = 'open' - self.objet_part = object_part - self.arm: str = arm + def to_sql(self) -> ORMOpeningMotion: + return ORMOpeningMotion(self.arm) - def ground(self) -> Motion: - """ - Default resolver for opening motion designator, returns a resolved motion designator for the input parameters. + def insert(self, session: Session, *args, **kwargs) -> ORMOpeningMotion: + motion = super().insert(session) + op = self.object_part.insert(session) + motion.object = op + session.add(motion) - :return: A resolved motion designator - """ - return self.Motion(self.cmd, self.objet_part, self.arm) + return motion -class ClosingMotion(MotionDesignatorDescription): +@dataclass +class ClosingMotion(BaseMotion): """ Designator for closing a container """ - @dataclasses.dataclass - class Motion(MotionDesignatorDescription.Motion): - # cmd: str - object_part: ObjectPart.Object - """ - Object designator for the drawer handle - """ - arm: str - """ - Arm that should be used - """ - - @with_tree - def perform(self): - pm_manager = ProcessModuleManager.get_manager() - return pm_manager.close().execute(self) - - def to_sql(self) -> ORMClosingMotion: - return ORMClosingMotion(self.arm) - - def insert(self, session: Session, *args, **kwargs) -> ORMClosingMotion: - motion = super().insert(session) - - op = self.object_part.insert(session) - motion.object_id = op.id - - session.add(motion) - session.commit() - - return motion + object_part: ObjectPart.Object + """ + Object designator for the drawer handle + """ + arm: str + """ + Arm that should be used + """ - def __init__(self, object_part: ObjectPart.Object, arm: str, resolver: Optional[Callable] = None): - """ - Lets the robot close a container specified by the given parameter. This assumes that the handle is already grasped + @with_tree + def perform(self): + pm_manager = ProcessModuleManager.get_manager() + return pm_manager.close().execute(self) - :param object_part: Object designator describing the handle of the drawer - :param arm: Arm that should be used - :param resolver: An alternative resolver - """ - super().__init__(resolver) - self.cmd: str = 'close' - self.objet_part = object_part - self.arm: str = arm + def to_sql(self) -> ORMClosingMotion: + return ORMClosingMotion(self.arm) - def ground(self) -> Motion: - """ - Default resolver for opening motion designator, returns a resolved motion designator for the input parameters. + def insert(self, session: Session, *args, **kwargs) -> ORMClosingMotion: + motion = super().insert(session) + op = self.object_part.insert(session) + motion.object = op + session.add(motion) - :return: A resolved motion designator - """ - return self.Motion(self.cmd, self.objet_part, self.arm) + return motion diff --git a/src/pycram/designators/object_designator.py b/src/pycram/designators/object_designator.py index 02a58ef41..f7a5cf4e5 100644 --- a/src/pycram/designators/object_designator.py +++ b/src/pycram/designators/object_designator.py @@ -1,11 +1,12 @@ import dataclasses -from typing import List, Union, Optional, Callable, Tuple, Iterable +from typing_extensions import List, Optional, Callable import sqlalchemy.orm -from ..bullet_world import BulletWorld, Object as BulletWorldObject -from ..designator import DesignatorDescription, ObjectDesignatorDescription +from pycram.world import World +from pycram.world_concepts.world_object import Object as WorldObject +from ..designator import ObjectDesignatorDescription from ..orm.base import ProcessMetaData from ..orm.object_designator import (BelieveObject as ORMBelieveObject, ObjectPart as ORMObjectPart) -from ..pose import Pose +from pycram.datastructures.pose import Pose from ..external_interfaces.robokudo import query @@ -21,14 +22,14 @@ class Object(ObjectDesignatorDescription.Object): """ def to_sql(self) -> ORMBelieveObject: - return ORMBelieveObject(self.type, self.name) + return ORMBelieveObject(self.obj_type, self.name) def insert(self, session: sqlalchemy.orm.session.Session) -> ORMBelieveObject: + metadata = ProcessMetaData().insert(session) self_ = self.to_sql() + self_.process_metadata = metadata session.add(self_) - session.commit() - metadata = ProcessMetaData().insert(session) - self_.process_metadata_id = metadata.id + return self_ @@ -44,17 +45,15 @@ class Object(ObjectDesignatorDescription.Object): part_pose: Pose def to_sql(self) -> ORMObjectPart: - return ORMObjectPart(self.type, self.name) + return ORMObjectPart(self.obj_type, self.name) def insert(self, session: sqlalchemy.orm.session.Session) -> ORMObjectPart: - obj = self.to_sql() metadata = ProcessMetaData().insert(session) - obj.process_metadata_id = metadata.id pose = self.part_pose.insert(session) - obj.pose_id = pose.id - + obj = self.to_sql() + obj.process_metadata = metadata + obj.pose = pose session.add(obj) - session.commit() return obj @@ -94,9 +93,9 @@ def __iter__(self): :yield: A resolved Object designator """ for name in self.names: - if name in self.part_of.bullet_world_object.links.keys(): - yield self.Object(name, self.type, self.part_of.bullet_world_object, - self.part_of.bullet_world_object.get_link_pose(name)) + if name in self.part_of.world_object.link_name_to_id.keys(): + yield self.Object(name, self.type, self.part_of.world_object, + self.part_of.world_object.get_link_pose(name)) class LocatedObject(ObjectDesignatorDescription): @@ -136,7 +135,7 @@ class RealObject(ObjectDesignatorDescription): """ Object designator representing an object in the real world, when resolving this object designator description ] RoboKudo is queried to perceive an object fitting the given criteria. Afterward the resolver tries to match - the found object to an Object in the BulletWorld. + the found object to an Object in the World. """ @dataclasses.dataclass @@ -147,31 +146,28 @@ class Object(ObjectDesignatorDescription.Object): """ def __init__(self, names: Optional[List[str]] = None, types: Optional[List[str]] = None, - bullet_world_object: BulletWorldObject = None, resolver: Optional[Callable] = None): + world_object: WorldObject = None, resolver: Optional[Callable] = None): """ :param names: :param types: - :param bullet_world_object: + :param world_object: :param resolver: """ super().__init__(resolver) self.types: Optional[List[str]] = types self.names: Optional[List[str]] = names - self.bullet_world_object: BulletWorldObject = bullet_world_object + self.world_object: WorldObject = world_object def __iter__(self): """ - Queries RoboKudo for objects that fit the description and then iterates over all BulletWorld objects that have - the same type to match a BulletWorld object to the real object. + Queries RoboKudo for objects that fit the description and then iterates over all World objects that have + the same type to match a World object to the real object. - :yield: A resolved object designator with reference bullet world object + :yield: A resolved object designator with reference world object """ object_candidates = query(self) for obj_desig in object_candidates: - for bullet_obj in BulletWorld.get_objects_by_type(obj_desig.type): - obj_desig.bullet_world_object = bullet_obj + for world_obj in World.get_object_by_type(obj_desig.obj_type): + obj_desig.world_object = world_obj yield obj_desig - # if bullet_obj.get_pose().dist(obj_deisg.pose) < 0.05: - # obj_deisg.bullet_world_object = bullet_obj - # yield obj_deisg diff --git a/src/pycram/external_interfaces/giskard.py b/src/pycram/external_interfaces/giskard.py index 80bfdf1da..a5fc75a52 100644 --- a/src/pycram/external_interfaces/giskard.py +++ b/src/pycram/external_interfaces/giskard.py @@ -1,20 +1,18 @@ import json import threading -import rosnode import rospy import sys import rosnode -import urdf_parser_py - -import traceback -from ..pose import Pose +from pycram.datastructures.pose import Pose from ..robot_descriptions import robot_description -from ..bullet_world import BulletWorld, Object +from pycram.world import World +from pycram.datastructures.dataclasses import MeshVisualShape +from pycram.world_concepts.world_object import Object from ..robot_description import ManipulatorDescription -from typing import List, Tuple, Dict, Callable, Optional +from typing_extensions import List, Dict, Callable, Optional from geometry_msgs.msg import PoseStamped, PointStamped, QuaternionStamped, Vector3Stamped from threading import Lock, RLock @@ -23,7 +21,7 @@ from giskard_msgs.msg import WorldBody, MoveResult, CollisionEntry from giskard_msgs.srv import UpdateWorldRequest, UpdateWorld, UpdateWorldResponse, RegisterGroupResponse except ModuleNotFoundError as e: - rospy.logwarn("Failed to import Giskard messages") + rospy.logwarn("Unable to import Giskard messages. Real robot not available") giskard_wrapper = None giskard_update_service = None @@ -95,11 +93,11 @@ def wrapper(*args, **kwargs): @init_giskard_interface def initial_adding_objects() -> None: """ - Adds object that are loaded in the BulletWorld to the Giskard belief state, if they are not present at the moment. + Adds object that are loaded in the World to the Giskard belief state, if they are not present at the moment. """ groups = giskard_wrapper.get_group_names() - for obj in BulletWorld.current_bullet_world.objects: - if obj is BulletWorld.robot: + for obj in World.current_world.objects: + if obj is World.robot: continue name = obj.name + "_" + str(obj.id) if name not in groups: @@ -109,11 +107,11 @@ def initial_adding_objects() -> None: @init_giskard_interface def removing_of_objects() -> None: """ - Removes objects that are present in the Giskard belief state but not in the BulletWorld from the Giskard belief state. + Removes objects that are present in the Giskard belief state but not in the World from the Giskard belief state. """ groups = giskard_wrapper.get_group_names() object_names = list( - map(lambda obj: object_names.name + "_" + str(obj.id), BulletWorld.current_bullet_world.objects)) + map(lambda obj: object_names.name + "_" + str(obj.id), World.current_world.objects)) diff = list(set(groups) - set(object_names)) for grp in diff: giskard_wrapper.remove_group(grp) @@ -122,19 +120,19 @@ def removing_of_objects() -> None: @init_giskard_interface def sync_worlds() -> None: """ - Synchronizes the BulletWorld and the Giskard belief state, this includes adding and removing objects to the Giskard - belief state such that it matches the objects present in the BulletWorld and moving the robot to the position it is - currently at in the BulletWorld. + Synchronizes the World and the Giskard belief state, this includes adding and removing objects to the Giskard + belief state such that it matches the objects present in the World and moving the robot to the position it is + currently at in the World. """ add_gripper_groups() - bullet_object_names = set() - for obj in BulletWorld.current_bullet_world.objects: - if obj.name != robot_description.name and len(obj.links) != 1: - bullet_object_names.add(obj.name + "_" + str(obj.id)) + world_object_names = set() + for obj in World.current_world.objects: + if obj.name != robot_description.name and len(obj.link_name_to_id) != 1: + world_object_names.add(obj.name + "_" + str(obj.id)) giskard_object_names = set(giskard_wrapper.get_group_names()) robot_name = {robot_description.name} - if not bullet_object_names.union(robot_name).issubset(giskard_object_names): + if not world_object_names.union(robot_name).issubset(giskard_object_names): giskard_wrapper.clear_world() initial_adding_objects() @@ -154,14 +152,14 @@ def update_pose(object: Object) -> 'UpdateWorldResponse': @init_giskard_interface def spawn_object(object: Object) -> None: """ - Spawns a BulletWorld Object in the giskard belief state. + Spawns a World Object in the giskard belief state. - :param object: BulletWorld object that should be spawned + :param object: World object that should be spawned """ - if len(object.links) == 1: - geometry = object.urdf_object.link_map[object.urdf_object.get_root()].collision.geometry - if isinstance(geometry, urdf_parser_py.urdf.Mesh): - filename = geometry.filename + if len(object.link_name_to_id) == 1: + geometry = object.get_link_geometry(object.root_link_name) + if isinstance(geometry, MeshVisualShape): + filename = geometry.file_name spawn_mesh(object.name + "_" + str(object.id), filename, object.get_pose()) else: spawn_urdf(object.name + "_" + str(object.id), object.path, object.get_pose()) @@ -172,7 +170,7 @@ def remove_object(object: Object) -> 'UpdateWorldResponse': """ Removes an object from the giskard belief state. - :param object: The BulletWorld Object that should be removed + :param object: The World Object that should be removed """ return giskard_wrapper.remove_group(object.name + "_" + str(object.id)) @@ -239,14 +237,14 @@ def _manage_par_motion_goals(goal_func, *args) -> Optional['MoveResult']: if "tip_link" in par_value_pair.keys() and "root_link" in par_value_pair.keys(): if par_value_pair["tip_link"] == robot_description.base_link: continue - chain = BulletWorld.robot.urdf_object.get_chain(par_value_pair["root_link"], - par_value_pair["tip_link"]) + chain = World.robot.description.get_chain(par_value_pair["root_link"], + par_value_pair["tip_link"]) if set(chain).intersection(used_joints) != set(): giskard_wrapper.cmd_seq = tmp raise AttributeError(f"The joint(s) {set(chain).intersection(used_joints)} is used by multiple Designators") else: [used_joints.add(joint) for joint in chain] - + elif "goal_state" in par_value_pair.keys(): if set(par_value_pair["goal_state"].keys()).intersection(used_joints) != set(): giskard_wrapper.cmd_seq = tmp @@ -529,8 +527,8 @@ def avoid_collisions(object1: Object, object2: Object) -> None: """ Will avoid collision between the two objects for the next goal. - :param object1: The first BulletWorld Object - :param object2: The second BulletWorld Object + :param object1: The first World Object + :param object2: The second World Object """ giskard_wrapper.avoid_collision(-1, object1.name + "_" + str(object1.id), object2.name + "_" + str(object2.id)) @@ -540,10 +538,10 @@ def avoid_collisions(object1: Object, object2: Object) -> None: @init_giskard_interface def make_world_body(object: Object) -> 'WorldBody': """ - Creates a WorldBody message for a BulletWorld Object. The WorldBody will contain the URDF of the BulletWorld Object + Creates a WorldBody message for a World Object. The WorldBody will contain the URDF of the World Object - :param object: The BulletWorld Object - :return: A WorldBody message for the BulletWorld Object + :param object: The World Object + :return: A WorldBody message for the World Object """ urdf_string = "" with open(object.path) as f: diff --git a/src/pycram/external_interfaces/ik.py b/src/pycram/external_interfaces/ik.py index d84e9a027..a6c73f328 100644 --- a/src/pycram/external_interfaces/ik.py +++ b/src/pycram/external_interfaces/ik.py @@ -1,35 +1,19 @@ -from typing import List +from typing_extensions import List, Union -import pybullet as p import rospy from moveit_msgs.msg import PositionIKRequest from moveit_msgs.msg import RobotState from moveit_msgs.srv import GetPositionIK from sensor_msgs.msg import JointState -from ..bullet_world import Object -from ..helper import calculate_wrist_tool_offset -from ..local_transformer import LocalTransformer -from ..pose import Pose, Transform +from pycram.world_concepts.world_object import Object +from ..helper import calculate_wrist_tool_offset, _apply_ik +from pycram.local_transformer import LocalTransformer +from pycram.datastructures.pose import Pose from ..robot_descriptions import robot_description from ..plan_failures import IKError -def _get_position_for_joints(robot, joints): - """ - Returns a list with all joint positions for the joint names specified in - the joints parameter - - :param robot: The robot the joint states should be taken from - :param joints: The list of joint names that should be in the output - :return: A list of joint states according and in the same order as the joint - names in the joints parameter - """ - return list( - map(lambda x: p.getJointState(robot.id, robot.get_joint_id(x), physicsClientId=robot.world.client_id)[0], - joints)) - - def _make_request_msg(root_link: str, tip_link: str, target_pose: Pose, robot_object: Object, joints: List[str]) -> PositionIKRequest: """ @@ -50,7 +34,7 @@ def _make_request_msg(root_link: str, tip_link: str, target_pose: Pose, robot_ob robot_state = RobotState() joint_state = JointState() joint_state.name = joints - joint_state.position = _get_position_for_joints(robot_object, joints) + joint_state.position = [robot_object.get_joint_position(joint) for joint in joints] # joint_state.velocity = [0.0 for x in range(len(joints))] # joint_state.effort = [0.0 for x in range(len(joints))] robot_state.joint_state = joint_state @@ -76,8 +60,7 @@ def call_ik(root_link: str, tip_link: str, target_pose: Pose, robot_object: Obje :param root_link: The first link of the chain of joints to be altered :param tip_link: The last link in the chain of joints to be altered - :param target_pose: The target pose in frame of root link - second is the orientation as quaternion in world coordinate frame + :param target_pose: The target pose in frame of root link second is the orientation as quaternion in world coordinate frame :param robot_object: The robot object for which the ik solution should be generated :param joints: A list of joint name that should be altered :return: The solution that was generated as a list of joint values corresponding to the order of joints given @@ -106,6 +89,61 @@ def call_ik(root_link: str, tip_link: str, target_pose: Pose, robot_object: Obje return resp.solution.joint_state.position +def try_to_reach_with_grasp(pose_or_object: Union[Pose, Object], + prospection_robot: Object, gripper_name: str, + grasp: str) -> Union[Pose, None]: + """ + Checks if the robot can reach a given position with a specific grasp orientation. + To determine this the inverse kinematics are calculated and applied. + + :param pose_or_object: The position and rotation or Object for which reachability should be checked or an Object + :param prospection_robot: The robot that should reach for the position + :param gripper_name: The name of the end effector + :param grasp: The grasp type with which the object should be grasped + """ + + input_pose = pose_or_object.get_pose() if isinstance(pose_or_object, Object) else pose_or_object + + target_pose = apply_grasp_orientation_to_pose(grasp, input_pose) + + return try_to_reach(target_pose, prospection_robot, gripper_name) + + +def apply_grasp_orientation_to_pose(grasp: str, pose: Pose) -> Pose: + """ + Applies the orientation of a grasp to a given pose. This is done by using the grasp orientation + of the given grasp and applying it to the given pose. + + :param grasp: The name of the grasp + :param pose: The pose to which the grasp orientation should be applied + """ + local_transformer = LocalTransformer() + target_map = local_transformer.transform_pose(pose, "map") + grasp_orientation = robot_description.grasps.get_orientation_for_grasp(grasp) + target_map.orientation.x = grasp_orientation[0] + target_map.orientation.y = grasp_orientation[1] + target_map.orientation.z = grasp_orientation[2] + target_map.orientation.w = grasp_orientation[3] + return target_map + + +def try_to_reach(pose_or_object: Union[Pose, Object], prospection_robot: Object, + gripper_name: str) -> Union[Pose, None]: + input_pose = pose_or_object.get_pose() if isinstance(pose_or_object, Object) else pose_or_object + + arm = "left" if gripper_name == robot_description.get_tool_frame("left") else "right" + joints = robot_description.chains[arm].joints + + try: + inv = request_ik(input_pose, prospection_robot, joints, gripper_name) + except IKError as e: + rospy.logerr(f"Pose is not reachable: {e}") + return None + _apply_ik(prospection_robot, inv, joints) + + return input_pose + + def request_ik(target_pose: Pose, robot: Object, joints: List[str], gripper: str) -> List[float]: """ Top-level method to request ik solution for a given pose. Before calling the ik service the links directly before @@ -125,7 +163,6 @@ def request_ik(target_pose: Pose, robot: Object, joints: List[str], gripper: str end_effector = robot_description.get_child(joints[-1]) target_torso = local_transformer.transform_pose(target_pose, robot.get_link_tf_frame(base_link)) - # target_torso = _transform_to_torso(pose, shadow_robot) diff = calculate_wrist_tool_offset(end_effector, gripper, robot) target_diff = target_torso.to_transform("target").inverse_times(diff).to_pose() @@ -133,4 +170,3 @@ def request_ik(target_pose: Pose, robot: Object, joints: List[str], gripper: str inv = call_ik(base_link, end_effector, target_diff, robot, joints) return inv - diff --git a/src/pycram/external_interfaces/knowrob.py b/src/pycram/external_interfaces/knowrob.py index 3b9372b1b..9bd5055b6 100644 --- a/src/pycram/external_interfaces/knowrob.py +++ b/src/pycram/external_interfaces/knowrob.py @@ -3,7 +3,7 @@ import sys import rosservice -from typing import Dict, List, Union +from typing_extensions import Dict, List, Union SCRIPT_DIR = os.path.abspath(os.path.dirname(__file__)) sys.path.append(os.path.join(SCRIPT_DIR, os.pardir, os.pardir, "neem-interface", "src")) diff --git a/src/pycram/external_interfaces/move_base.py b/src/pycram/external_interfaces/move_base.py new file mode 100644 index 000000000..d443ef739 --- /dev/null +++ b/src/pycram/external_interfaces/move_base.py @@ -0,0 +1,81 @@ +import sys + +import rospy +import actionlib +import rosnode +from geometry_msgs.msg import PoseStamped +from typing import Callable + +try: + from move_base_msgs.msg import MoveBaseAction, MoveBaseGoal +except ModuleNotFoundError as e: + rospy.logwarn(f"Could not import MoveBase messages, Navigation interface could not be initialized") + + +# Global variables for shared resources +nav_action_client = None +is_init = False + + +def create_nav_action_client() -> actionlib.SimpleActionClient: + """Creates a new action client for the move_base interface.""" + client = actionlib.SimpleActionClient("move_base", MoveBaseAction) + rospy.loginfo("Waiting for move_base action server") + client.wait_for_server() + return client + + +def init_nav_interface(func: Callable) -> Callable: + """Ensures initialization of the navigation interface before function execution.""" + + def wrapper(*args, **kwargs): + global is_init + global nav_action_client + + if is_init: + return func(*args, **kwargs) + + if "move_base_msgs" not in sys.modules: + rospy.logwarn("Could not initialize the navigation interface: move_base_msgs not imported") + return + + if "/move_base" in rosnode.get_node_names(): + nav_action_client = create_nav_action_client() + rospy.loginfo("Successfully initialized navigation interface") + is_init = True + else: + rospy.logwarn("Move_base is not running, could not initialize navigation interface") + return + + return func(*args, **kwargs) + + return wrapper + + +@init_nav_interface +def query_pose_nav(navpose: PoseStamped): + """Sends a goal to the move_base service, initiating robot navigation to a given pose.""" + global nav_action_client + global query_result + + def active_callback(): + rospy.loginfo("Sent query to move_base") + + def done_callback(state, result): + rospy.loginfo("Finished moving") + global query_result + query_result = result + + goal_msg = MoveBaseGoal() + goal_msg.target_pose = navpose + nav_action_client.send_goal(goal_msg, active_cb=active_callback, done_cb=done_callback) + + nav_action_client.wait_for_result() + + return query_result + + +def cancel_nav(): + """Cancels the current navigation goal.""" + global nav_action_client + nav_action_client.cancel_all_goals() diff --git a/src/pycram/external_interfaces/robokudo.py b/src/pycram/external_interfaces/robokudo.py index e332c3e07..5f41af46b 100644 --- a/src/pycram/external_interfaces/robokudo.py +++ b/src/pycram/external_interfaces/robokudo.py @@ -1,16 +1,15 @@ import sys -from typing import Callable +from typing_extensions import Callable -import rosnode import rospy import actionlib import rosnode from ..designator import ObjectDesignatorDescription -from ..pose import Pose -from ..local_transformer import LocalTransformer -from ..bullet_world import BulletWorld -from ..enums import ObjectType +from pycram.datastructures.pose import Pose +from pycram.local_transformer import LocalTransformer +from pycram.world import World +from pycram.datastructures.enums import ObjectType try: from robokudo_msgs.msg import ObjectDesignator as robokudo_ObjetDesignator @@ -39,7 +38,7 @@ def wrapper(*args, **kwargs): rospy.logwarn("RoboKudo is not running, could not initialize RoboKudo interface") return - func(*args, **kwargs) + return func(*args, **kwargs) return wrapper @@ -85,7 +84,7 @@ def msg_from_obj_desig(obj_desc: ObjectDesignatorDescription) -> 'robokudo_Objet """ obj_msg = robokudo_ObjetDesignator() obj_msg.uid = str(id(obj_desc)) - obj_msg.type = obj_desc.types[0] # For testing purposes + obj_msg.obj_type = obj_desc.types[0] # For testing purposes return obj_msg @@ -99,7 +98,7 @@ def make_query_goal_msg(obj_desc: ObjectDesignatorDescription) -> 'QueryGoal': """ goal_msg = QueryGoal() goal_msg.obj.uid = str(id(obj_desc)) - goal_msg.obj.type = str(obj_desc.types[0].name) # For testing purposes + goal_msg.obj.obj_type = str(obj_desc.types[0].name) # For testing purposes if ObjectType.JEROEN_CUP == obj_desc.types[0]: goal_msg.obj.color.append("blue") elif ObjectType.BOWL == obj_desc.types[0]: @@ -125,7 +124,7 @@ def query(object_desc: ObjectDesignatorDescription) -> ObjectDesignatorDescripti for i in range(0, len(query_result.res[0].pose)): pose = Pose.from_pose_stamped(query_result.res[0].pose[i]) - pose.frame = BulletWorld.current_bullet_world.robot.get_link_tf_frame(pose.frame) + pose.frame = World.current_world.robot.get_link_tf_frame(pose.frame) # TODO: pose.frame is a link name? source = query_result.res[0].poseSource[i] lt = LocalTransformer() diff --git a/src/pycram/failure_handling.py b/src/pycram/failure_handling.py index 5aab138c8..8fb266282 100644 --- a/src/pycram/failure_handling.py +++ b/src/pycram/failure_handling.py @@ -1,6 +1,7 @@ from .designator import DesignatorDescription from .plan_failures import PlanFailure + class FailureHandling: """ Base class for failure handling mechanisms in automated systems or workflows. @@ -8,21 +9,13 @@ class FailureHandling: This class provides a structure for implementing different strategies to handle failures that may occur during the execution of a plan or process. It is designed to be extended by subclasses that implement specific failure handling behaviors. - - Attributes: - designator_description (DesignatorDescription): An instance of DesignatorDescription. - - Methods: - perform(): Abstract method """ - def __init__(self, designator_description:DesignatorDescription): + def __init__(self, designator_description: DesignatorDescription): """ Initializes a new instance of the FailureHandling class. - Args: - designator_description (DesignatorDescription): The description or context - of the task or process for which the failure handling is being set up. + :param designator_description: The description or context of the task or process for which the failure handling is being set up. """ self.designator_description = designator_description @@ -33,11 +26,11 @@ def perform(self): This method should be overridden in subclasses to implement the specific behavior for handling failures. - Raises: - NotImplementedError: If the method is not implemented in a subclass. + :raises NotImplementedError: If the method is not implemented in a subclass. """ raise NotImplementedError() + class Retry(FailureHandling): """ A subclass of FailureHandling that implements a retry mechanism. @@ -55,14 +48,12 @@ class Retry(FailureHandling): perform(): Implements the retry logic. """ - def __init__(self, designator_description:DesignatorDescription, max_tries:int=3): + def __init__(self, designator_description: DesignatorDescription, max_tries: int = 3): """ Initializes a new instance of the Retry class. - Args: - designator_description (DesignatorDescription): The description or context - of the task or process for which the retry mechanism is being set up. - max_tries (int, optional): The maximum number of attempts to retry. Defaults to 3. + :param designator_description: The description or context of the task or process for which the retry mechanism is being set up. + :param max_tries: The maximum number of attempts to retry. Defaults to 3. """ super().__init__(designator_description) self.max_tries = max_tries @@ -75,8 +66,7 @@ def perform(self): If the action fails, it is retried up to max_tries times. If all attempts fail, the last exception is raised. - Raises: - PlanFailure: If all retry attempts fail. + :raises PlanFailure: If all retry attempts fail. """ tries = 0 for action in iter(self.designator_description): diff --git a/src/pycram/fluent.py b/src/pycram/fluent.py index a8f2f3ef2..9566e2906 100644 --- a/src/pycram/fluent.py +++ b/src/pycram/fluent.py @@ -1,13 +1,3 @@ -"""Implementation of fluents and the whenever macro. - -Macros: -whenever -- macro to repeat a body as long as the value of a fluent is not None or whenever a pulsed fluent changes its value or gets pulsed. - -Classes: -Behavior -- enumeration to describe how to handle missed pulses in the whenever macro. -Fluent -- implementation of fluents. -""" - # used for delayed evaluation of typing until python 3.11 becomes mainstream from __future__ import annotations @@ -16,7 +6,7 @@ from enum import Enum from threading import Condition, Lock from uuid import uuid4 -from typing import Any, Optional, List, Callable +from typing_extensions import Any, Optional, List, Callable class Behavior(Enum): @@ -115,7 +105,7 @@ def pulse(self) -> None: def whenever(self, callback: Callable) -> None: """ Registers a callback which is called everytime this Fluent is pulsed. The callback should be a Callable. When - the callback is called it gets the current value of this Fluent as an argument. `1 + the callback is called it gets the current value of this Fluent as an argument. :param callback: The callback which should be called when pulsed as a Callable. """ @@ -138,7 +128,6 @@ def get_value(self) -> Any: def set_value(self, value: Any) -> None: """Change the value of the fluent. - Changing the value will also pulse the fluent. :param value: the new value of the fluent. diff --git a/src/pycram/helper.py b/src/pycram/helper.py index 52b5ae67f..672d9951f 100644 --- a/src/pycram/helper.py +++ b/src/pycram/helper.py @@ -7,19 +7,14 @@ GeneratorList -- implementation of generator list wrappers. """ from inspect import isgeneratorfunction -from typing import List -from typing import Tuple, Callable +from typing_extensions import List, Tuple, Callable import numpy as np -import pybullet as p from pytransform3d.rotations import quaternion_wxyz_from_xyzw, quaternion_xyzw_from_wxyz from pytransform3d.transformations import transform_from_pq, transform_from, pq_from_transform -from .bullet_world import Object as BulletWorldObject -from .local_transformer import LocalTransformer -from .pose import Transform, Pose -from .robot_descriptions import robot_description -import os +from pycram.world_concepts.world_object import Object as WorldObject +from pycram.datastructures.pose import Transform, Pose import math @@ -42,7 +37,7 @@ class bcolors: UNDERLINE = '\033[4m' -def _apply_ik(robot: BulletWorldObject, joint_poses: List[float], joints: List[str]) -> None: +def _apply_ik(robot: WorldObject, joint_poses: List[float], joints: List[str]) -> None: """ Apllies a list of joint poses calculated by an inverse kinematics solver to a robot @@ -54,36 +49,13 @@ def _apply_ik(robot: BulletWorldObject, joint_poses: List[float], joints: List[s # arm ="left" if gripper == robot_description.get_tool_frame("left") else "right" # ik_joints = [robot_description.torso_joint] + robot_description._safely_access_chains(arm).joints # ik_joints = robot_description._safely_access_chains(arm).joints - robot.set_joint_states(dict(zip(joints, joint_poses))) + robot.set_joint_positions(dict(zip(joints, joint_poses))) # for i in range(0, len(joints)): # robot.set_joint_state(joints[i], joint_poses[i]) -def _transform_to_torso(pose_and_rotation: Tuple[List[float], List[float]], robot: BulletWorldObject) -> Tuple[ - List[float], List[float]]: - # map_T_torso = robot.get_link_position_and_orientation("base_footprint") - # map_T_torso = robot.get_position_and_orientation() - map_T_torso = robot.get_link_pose(robot_description.torso_link).to_list() - torso_T_map = p.invertTransform(map_T_torso[0], map_T_torso[1]) - map_T_target = pose_and_rotation - torso_T_target = p.multiplyTransforms(torso_T_map[0], torso_T_map[1], map_T_target[0], map_T_target[1]) - return torso_T_target - - -def calculate_wrist_tool_offset(wrist_frame: str, tool_frame: str, robot: BulletWorldObject) -> Transform: - local_transformer = LocalTransformer() - tool_pose = robot.get_link_pose(tool_frame) - wrist_to_tool = local_transformer.transform_pose(tool_pose, robot.get_link_tf_frame(wrist_frame)) - return wrist_to_tool.to_transform(robot.get_link_tf_frame(tool_frame)) - - -def inverseTimes(transform1: Tuple[List[float], List[float]], transform2: Tuple[List[float], List[float]]) -> Tuple[ - List[float], List[float]]: - """ - Like a Minus for Transforms, this subtracts the second transform from the first. - """ - inv = p.invertTransform(transform2[0], transform2[1]) - return p.multiplyTransforms(transform1[0], transform1[1], inv[0], inv[1]) +def calculate_wrist_tool_offset(wrist_frame: str, tool_frame: str, robot: WorldObject) -> Transform: + return robot.get_transform_between_links(wrist_frame, tool_frame) def transform(pose: List[float], diff --git a/src/pycram/language.py b/src/pycram/language.py index 081ba0cbe..81612a78b 100644 --- a/src/pycram/language.py +++ b/src/pycram/language.py @@ -2,10 +2,10 @@ from __future__ import annotations import time -from typing import Iterable, Optional, Callable, Dict, Any, List, Union -from anytree import NodeMixin, Node, PreOrderIter, RenderTree +from typing_extensions import Iterable, Optional, Callable, Dict, Any, List, Union +from anytree import NodeMixin, Node, PreOrderIter -from .enums import State +from pycram.datastructures.enums import State import threading from .fluent import Fluent @@ -157,7 +157,7 @@ def simplify(self) -> Language: """ Simplifies the language tree by merging which have a parent-child relation and are of the same type. - .. code-block:: python + .. code-block:: ├── @@ -165,7 +165,6 @@ def simplify(self) -> Language: │ └── └── - would be simplified to: diff --git a/src/pycram/local_transformer.py b/src/pycram/local_transformer.py index 5ef4d5c85..e045d0148 100644 --- a/src/pycram/local_transformer.py +++ b/src/pycram/local_transformer.py @@ -1,23 +1,16 @@ import sys import logging -import tf - -if 'bullet_world' in sys.modules: - logging.warning("(publisher) Make sure that you are not loading this module from pycram.bullet_world.") -import rospkg +if 'world' in sys.modules: + logging.warning("(publisher) Make sure that you are not loading this module from pycram.world.") import rospy -import atexit -from threading import Thread, currentThread -from tf import TransformerROS, transformations -from rospy import Duration, logerr, Rate, is_shutdown -from urdf_parser_py.urdf import URDF +from tf import TransformerROS +from rospy import Duration from geometry_msgs.msg import TransformStamped -from .pose import Pose, Transform -from .robot_descriptions import robot_description -from typing import List, Optional, Tuple, Union, Callable +from .datastructures.pose import Pose, Transform +from typing_extensions import List, Optional, Union, Iterable class LocalTransformer(TransformerROS): @@ -29,7 +22,7 @@ class LocalTransformer(TransformerROS): This class uses the robots (currently only one! supported) URDF file to initialize the tfs for the robot. Moreover, the function update_local_transformer_from_btr - updates these tfs by copying the tfs state from the pybullet world. + updates these tfs by copying the tfs state from the world. This class extends the TransformerRos, you can find documentation for TransformerROS here: `TFDoc `_ @@ -46,37 +39,40 @@ def __new__(cls, *args, **kwargs): def __init__(self): if self._initialized: return super().__init__(interpolate=True, cache_time=Duration(10)) - - # TF tf_stampeds and static_tf_stampeds of the Robot in the BulletWorld: - # These are initialized with the function init_transforms_from_urdf and are - # used to update the local transformer with the function update_local_transformer_from_btr - self.tf_stampeds: List[TransformStamped] = [] - self.static_tf_stampeds: List[TransformStamped] = [] - - # Since this file can't import bullet_world.py this holds the reference to the current_bullet_world - self.bullet_world = None - self.shadow_world = None + # Since this file can't import world.py this holds the reference to the current_world + self.world = None + # TODO: Ask Jonas if this is still needed + self.prospection_world = None # If the singelton was already initialized self._initialized = True - def update_objects_for_current_world(self) -> None: + def transform_to_object_frame(self, pose: Pose, + world_object: 'world_concepts.world_object.Object', link_name: str = None) -> Union[Pose, None]: """ - Updates transformations for all objects that are currently in :py:attr:`~pycram.bullet_world.BulletWorld.current_bullet_world` + Transforms the given pose to the coordinate frame of the given World object. If no link name is given the + base frame of the Object is used, otherwise the link frame is used as target for the transformation. + + :param pose: Pose that should be transformed + :param world_object: BulletWorld Object in which frame the pose should be transformed + :param link_name: A link of the BulletWorld Object which will be used as target coordinate frame instead + :return: The new pose the in coordinate frame of the object """ - curr_time = rospy.Time.now() - for obj in list(self.bullet_world.current_bullet_world.objects): - self.update_transforms_for_object(obj, curr_time) + if link_name: + target_frame = world_object.get_link_tf_frame(link_name) + else: + target_frame = world_object.tf_frame + return self.transform_pose(pose, target_frame) def transform_pose(self, pose: Pose, target_frame: str) -> Union[Pose, None]: """ - Transforms a given pose to the target frame. + Transforms a given pose to the target frame after updating the transforms for all objects in the current world. :param pose: Pose that should be transformed :param target_frame: Name of the TF frame into which the Pose should be transformed :return: A transformed pose in the target frame """ - self.update_objects_for_current_world() + self.world.update_transforms_for_objects_in_current_world() copy_pose = pose.copy() copy_pose.header.stamp = rospy.Time(0) if not self.canTransform(target_frame, pose.frame, rospy.Time(0)): @@ -91,52 +87,29 @@ def transform_pose(self, pose: Pose, target_frame: str) -> Union[Pose, None]: return Pose(*copy_pose.to_list(), frame=new_pose.header.frame_id) - def transform_to_object_frame(self, pose: Pose, - bullet_object: 'bullet_world.Object', link_name: str = None) -> Union[Pose, None]: + def lookup_transform_from_source_to_target_frame(self, source_frame: str, target_frame: str, + time: Optional[rospy.rostime.Time] = None) -> Transform: """ - Transforms the given pose to the coordinate frame of the given BulletWorld object. If no link name is given the - base frame of the Object is used, otherwise the link frame is used as target for the transformation. + Update the transforms for all world objects then Look up for the latest known transform that transforms a point + from source frame to target frame. If no time is given the last common time between the two frames is used. - :param pose: Pose that should be transformed - :param bullet_object: BulletWorld Object in which frame the pose should be transformed - :param link_name: A link of the BulletWorld Object which will be used as target coordinate frame instead - :return: The new pose the in coordinate frame of the object + :param time: Time at which the transform should be looked up """ - if link_name: - target_frame = bullet_object.get_link_tf_frame(link_name) - else: - target_frame = bullet_object.tf_frame - return self.transform_pose(pose, target_frame) - - def tf_transform(self, source_frame: str, target_frame: str, - time: Optional[rospy.rostime.Time] = None) -> Transform: - """ - Returns the latest known transform between the 'source_frame' and 'target_frame'. If no time is given the last - common time between the two frames is used. - - :param source_frame: Source frame of the transform - :param target_frame: Target frame of the transform - :param time: Time at which the transform should be - :return: - """ - self.update_objects_for_current_world() + self.world.update_transforms_for_objects_in_current_world() tf_time = time if time else self.getLatestCommonTime(source_frame, target_frame) translation, rotation = self.lookupTransform(source_frame, target_frame, tf_time) return Transform(translation, rotation, source_frame, target_frame) - def update_transforms_for_object(self, bullet_object: 'bullet_world.Object', time: rospy.Time = None) -> None: + def update_transforms(self, transforms: Iterable[Transform], time: rospy.Time = None) -> None: """ - Updates local transforms for a Bullet Object, this includes the base as well as all links - - :param bullet_object: Object for which the Transforms should be updated - :param time: a specific time that should be used + Updates transforms by updating the time stamps of the header of each transform. If no time is given the current + time is used. """ time = time if time else rospy.Time.now() - for transform in bullet_object._current_link_transforms.values(): + for transform in transforms: transform.header.stamp = time self.setTransform(transform) - def get_all_frames(self) -> List[str]: """ Returns all know coordinate frames as a list with human-readable entries. @@ -149,12 +122,8 @@ def get_all_frames(self) -> List[str]: def transformPose(self, target_frame, ps) -> Pose: """ - Alias for :func:`~LocalTransformer.transform_pose` to avoid confusion since a similar method exists in the - super class. - - :param target_frame: Frame into which the pose should be transformer - :param ps: Pose that should be transformed - :return: Input pose in the target_frame + Alias for :func:`~LocalTransformer.transform_pose_to_target_frame` to avoid confusion since a similar method + exists in the super class. """ return self.transform_pose(ps, target_frame) diff --git a/src/pycram/object_descriptors/__init__.py b/src/pycram/object_descriptors/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/src/pycram/object_descriptors/urdf.py b/src/pycram/object_descriptors/urdf.py new file mode 100644 index 000000000..d21490d31 --- /dev/null +++ b/src/pycram/object_descriptors/urdf.py @@ -0,0 +1,371 @@ +import pathlib +from xml.etree import ElementTree + +import rospkg +import rospy +from geometry_msgs.msg import Point +from tf.transformations import quaternion_from_euler +from typing_extensions import Union, List, Optional +from urdf_parser_py import urdf +from urdf_parser_py.urdf import (URDF, Collision, Box as URDF_Box, Cylinder as URDF_Cylinder, + Sphere as URDF_Sphere, Mesh as URDF_Mesh) + +from pycram.datastructures.enums import JointType +from pycram.datastructures.pose import Pose +from pycram.description import JointDescription as AbstractJointDescription, \ + LinkDescription as AbstractLinkDescription, ObjectDescription as AbstractObjectDescription +from pycram.datastructures.dataclasses import Color, VisualShape, BoxVisualShape, CylinderVisualShape, \ + SphereVisualShape, MeshVisualShape + + +class LinkDescription(AbstractLinkDescription): + """ + A class that represents a link description of an object. + """ + + def __init__(self, urdf_description: urdf.Link): + super().__init__(urdf_description) + + @property + def geometry(self) -> Union[VisualShape, None]: + """ + Returns the geometry type of the URDF collision element of this link. + """ + if self.collision is None: + return None + urdf_geometry = self.collision.geometry + return self._get_visual_shape(urdf_geometry) + + @staticmethod + def _get_visual_shape(urdf_geometry) -> Union[VisualShape, None]: + """ + Returns the VisualShape of the given URDF geometry. + """ + if isinstance(urdf_geometry, URDF_Box): + return BoxVisualShape(Color(), [0, 0, 0], urdf_geometry.size) + if isinstance(urdf_geometry, URDF_Cylinder): + return CylinderVisualShape(Color(), [0, 0, 0], urdf_geometry.radius, urdf_geometry.length) + if isinstance(urdf_geometry, URDF_Sphere): + return SphereVisualShape(Color(), [0, 0, 0], urdf_geometry.radius) + if isinstance(urdf_geometry, URDF_Mesh): + return MeshVisualShape(Color(), [0, 0, 0], urdf_geometry.scale, urdf_geometry.filename) + return None + + @property + def origin(self) -> Union[Pose, None]: + if self.collision is None: + return None + if self.collision.origin is None: + return None + return Pose(self.collision.origin.xyz, + quaternion_from_euler(*self.collision.origin.rpy).tolist()) + + @property + def name(self) -> str: + return self.parsed_description.name + + @property + def collision(self) -> Collision: + return self.parsed_description.collision + + +class JointDescription(AbstractJointDescription): + urdf_type_map = {'unknown': JointType.UNKNOWN, + 'revolute': JointType.REVOLUTE, + 'continuous': JointType.CONTINUOUS, + 'prismatic': JointType.PRISMATIC, + 'floating': JointType.FLOATING, + 'planar': JointType.PLANAR, + 'fixed': JointType.FIXED} + + def __init__(self, urdf_description: urdf.Joint): + super().__init__(urdf_description) + + @property + def origin(self) -> Pose: + return Pose(self.parsed_description.origin.xyz, + quaternion_from_euler(*self.parsed_description.origin.rpy)) + + @property + def name(self) -> str: + return self.parsed_description.name + + @property + def has_limits(self) -> bool: + return bool(self.parsed_description.limit) + + @property + def type(self) -> JointType: + """ + :return: The type of this joint. + """ + return self.urdf_type_map[self.parsed_description.type] + + @property + def axis(self) -> Point: + """ + :return: The axis of this joint, for example the rotation axis for a revolute joint. + """ + return Point(*self.parsed_description.axis) + + @property + def lower_limit(self) -> Union[float, None]: + """ + :return: The lower limit of this joint, or None if the joint has no limits. + """ + if self.has_limits: + return self.parsed_description.limit.lower + else: + return None + + @property + def upper_limit(self) -> Union[float, None]: + """ + :return: The upper limit of this joint, or None if the joint has no limits. + """ + if self.has_limits: + return self.parsed_description.limit.upper + else: + return None + + @property + def parent_link_name(self) -> str: + """ + :return: The name of the parent link of this joint. + """ + return self.parsed_description.parent + + @property + def child_link_name(self) -> str: + """ + :return: The name of the child link of this joint. + """ + return self.parsed_description.child + + @property + def damping(self) -> float: + """ + :return: The damping of this joint. + """ + return self.parsed_description.dynamics.damping + + @property + def friction(self) -> float: + """ + :return: The friction of this joint. + """ + return self.parsed_description.dynamics.friction + + +class ObjectDescription(AbstractObjectDescription): + """ + A class that represents an object description of an object. + """ + + class Link(AbstractObjectDescription.Link, LinkDescription): + ... + + class RootLink(AbstractObjectDescription.RootLink, Link): + ... + + class Joint(AbstractObjectDescription.Joint, JointDescription): + ... + + def load_description(self, path) -> URDF: + with open(path, 'r') as file: + return URDF.from_xml_string(file.read()) + + def generate_from_mesh_file(self, path: str, name: str, color: Optional[Color] = Color()) -> str: + """ + Generates an URDf file with the given .obj or .stl file as mesh. In addition, the given rgba_color will be + used to create a material tag in the URDF. + + :param path: The path to the mesh file. + :param name: The name of the object. + :param color: The color of the object. + :return: The absolute path of the created file + """ + urdf_template = ' \n \ + \n \ + \n \ + \n \ + \n \ + \n \ + \n \ + \n \ + \n \ + \n \ + \n \ + \n \ + \n \ + \n \ + \n \ + \n \ + \n \ + ' + urdf_template = self.fix_missing_inertial(urdf_template) + rgb = " ".join(list(map(str, color.get_rgba()))) + pathlib_obj = pathlib.Path(path) + path = str(pathlib_obj.resolve()) + content = urdf_template.replace("~a", name).replace("~b", path).replace("~c", rgb) + return content + + def generate_from_description_file(self, path: str) -> str: + with open(path, mode="r") as f: + urdf_string = self.fix_missing_inertial(f.read()) + urdf_string = self.remove_error_tags(urdf_string) + urdf_string = self.fix_link_attributes(urdf_string) + try: + urdf_string = self.correct_urdf_string(urdf_string) + except rospkg.ResourceNotFound as e: + rospy.logerr(f"Could not find resource package linked in this URDF") + raise e + return urdf_string + + def generate_from_parameter_server(self, name: str) -> str: + urdf_string = rospy.get_param(name) + return self.correct_urdf_string(urdf_string) + + def get_link_by_name(self, link_name: str) -> LinkDescription: + """ + :return: The link description with the given name. + """ + for link in self.links: + if link.name == link_name: + return link + raise ValueError(f"Link with name {link_name} not found") + + @property + def links(self) -> List[LinkDescription]: + """ + :return: A list of links descriptions of this object. + """ + return [LinkDescription(link) for link in self.parsed_description.links] + + def get_joint_by_name(self, joint_name: str) -> JointDescription: + """ + :return: The joint description with the given name. + """ + for joint in self.joints: + if joint.name == joint_name: + return joint + raise ValueError(f"Joint with name {joint_name} not found") + + @property + def joints(self) -> List[JointDescription]: + """ + :return: A list of joints descriptions of this object. + """ + return [JointDescription(joint) for joint in self.parsed_description.joints] + + def get_root(self) -> str: + """ + :return: the name of the root link of this object. + """ + return self.parsed_description.get_root() + + def get_chain(self, start_link_name: str, end_link_name: str) -> List[str]: + """ + :return: the chain of links from 'start_link_name' to 'end_link_name'. + """ + return self.parsed_description.get_chain(start_link_name, end_link_name) + + def correct_urdf_string(self, urdf_string: str) -> str: + """ + Changes paths for files in the URDF from ROS paths to paths in the file system. Since World (PyBullet legacy) + can't deal with ROS package paths. + + :param urdf_string: The name of the URDf on the parameter server + :return: The URDF string with paths in the filesystem instead of ROS packages + """ + r = rospkg.RosPack() + new_urdf_string = "" + for line in urdf_string.split('\n'): + if "package://" in line: + s = line.split('//') + s1 = s[1].split('/') + path = r.get_path(s1[0]) + line = line.replace("package://" + s1[0], path) + new_urdf_string += line + '\n' + + return self.fix_missing_inertial(new_urdf_string) + + @staticmethod + def fix_missing_inertial(urdf_string: str) -> str: + """ + Insert inertial tags for every URDF link that has no inertia. + This is used to prevent Legacy(PyBullet) from dumping warnings in the terminal + + :param urdf_string: The URDF description as string + :returns: The new, corrected URDF description as string. + """ + + inertia_tree = ElementTree.ElementTree(ElementTree.Element("inertial")) + inertia_tree.getroot().append(ElementTree.Element("mass", {"value": "0.1"})) + inertia_tree.getroot().append(ElementTree.Element("origin", {"rpy": "0 0 0", "xyz": "0 0 0"})) + inertia_tree.getroot().append(ElementTree.Element("inertia", {"ixx": "0.01", + "ixy": "0", + "ixz": "0", + "iyy": "0.01", + "iyz": "0", + "izz": "0.01"})) + + # create tree from string + tree = ElementTree.ElementTree(ElementTree.fromstring(urdf_string)) + + for link_element in tree.iter("link"): + inertial = [*link_element.iter("inertial")] + if len(inertial) == 0: + link_element.append(inertia_tree.getroot()) + + return ElementTree.tostring(tree.getroot(), encoding='unicode') + + @staticmethod + def remove_error_tags(urdf_string: str) -> str: + """ + Removes all tags in the removing_tags list from the URDF since these tags are known to cause errors with the + URDF_parser + + :param urdf_string: String of the URDF from which the tags should be removed + :return: The URDF string with the tags removed + """ + tree = ElementTree.ElementTree(ElementTree.fromstring(urdf_string)) + removing_tags = ["gazebo", "transmission"] + for tag_name in removing_tags: + all_tags = tree.findall(tag_name) + for tag in all_tags: + tree.getroot().remove(tag) + + return ElementTree.tostring(tree.getroot(), encoding='unicode') + + @staticmethod + def fix_link_attributes(urdf_string: str) -> str: + """ + Removes the attribute 'type' from links since this is not parsable by the URDF parser. + + :param urdf_string: The string of the URDF from which the attributes should be removed + :return: The URDF string with the attributes removed + """ + tree = ElementTree.ElementTree(ElementTree.fromstring(urdf_string)) + + for link in tree.iter("link"): + if "type" in link.attrib.keys(): + del link.attrib["type"] + + return ElementTree.tostring(tree.getroot(), encoding='unicode') + + @staticmethod + def get_file_extension() -> str: + """ + :return: The file extension of the URDF file. + """ + return '.urdf' + + @property + def origin(self) -> Pose: + return Pose(self.parsed_description.origin.xyz, + quaternion_from_euler(*self.parsed_description.origin.rpy)) + + @property + def name(self) -> str: + return self.parsed_description.name diff --git a/src/pycram/orm/action_designator.py b/src/pycram/orm/action_designator.py index 48b4197a3..e5f4d20f8 100644 --- a/src/pycram/orm/action_designator.py +++ b/src/pycram/orm/action_designator.py @@ -1,8 +1,8 @@ -from typing import Optional +from typing_extensions import Optional from .base import RobotState, Designator, MapperArgsMixin, PoseMixin from .object_designator import ObjectMixin -from ..enums import Arms +from pycram.datastructures.enums import Arms from sqlalchemy.orm import Mapped, mapped_column, relationship from sqlalchemy import ForeignKey @@ -118,3 +118,8 @@ class GraspingAction(ObjectMixin, Action): id: Mapped[int] = mapped_column(ForeignKey(f'{Action.__tablename__}.id'), primary_key=True, init=False) arm: Mapped[str] + +class FaceAtAction(PoseMixin, Action): + """ORM Class of pycram.designators.action_designator.FaceAtAction.""" + + id: Mapped[int] = mapped_column(ForeignKey(f'{Action.__tablename__}.id'), primary_key=True, init=False) diff --git a/src/pycram/orm/base.py b/src/pycram/orm/base.py index cc6356d5e..ae38236ca 100644 --- a/src/pycram/orm/base.py +++ b/src/pycram/orm/base.py @@ -2,6 +2,7 @@ import datetime import getpass import os +from dataclasses import field from typing import Optional import git @@ -11,7 +12,7 @@ from sqlalchemy.orm import DeclarativeBase, Mapped, MappedAsDataclass, mapped_column, Session, relationship, \ declared_attr -from ..enums import ObjectType +from ..datastructures.enums import ObjectType def get_pycram_version_from_git() -> Optional[str]: @@ -27,7 +28,7 @@ def get_pycram_version_from_git() -> Optional[str]: return repo.head.object.hexsha -class _Base(DeclarativeBase): +class _Base(DeclarativeBase, MappedAsDataclass): """Dummy class""" type_annotation_map = { str: String(255) @@ -41,14 +42,14 @@ def __tablename__(self): return self.__name__ -class Base(_Base, MappedAsDataclass): +class Base(_Base): """ Base class to add orm functionality to all pycram mappings """ __abstract__ = True @declared_attr - def process_metadata_id(self) -> Mapped[Optional[int]]: + def process_metadata_id(self) -> Mapped[int]: return mapped_column(ForeignKey(f'{ProcessMetaData.__tablename__}.id'), default=None, init=False) """Related MetaData Object to store information about the context of this experiment.""" @@ -59,7 +60,7 @@ def process_metadata(self): tables""" -class MapperArgsMixin: +class MapperArgsMixin(MappedAsDataclass): """ MapperArgsMixin stores __mapper_args__ information for certain subclass-tables. For information about Mixins, see https://docs.sqlalchemy.org/en/20/orm/declarative_mixins.html @@ -72,14 +73,14 @@ def __mapper_args__(self): return {"polymorphic_identity": self.__tablename__} -class PositionMixin: +class PositionMixin(MappedAsDataclass): """ PositionMixin holds a foreign key column and its relationship to the referenced table. For information about Mixins, see https://docs.sqlalchemy.org/en/20/orm/declarative_mixins.html """ __abstract__ = True - position_to_init: bool = False + position_to_init: bool = field(default=False, init=False) @declared_attr def position_id(self) -> Mapped[int]: @@ -90,14 +91,14 @@ def position(self): return relationship(Position.__tablename__, init=False) -class QuaternionMixin: +class QuaternionMixin(MappedAsDataclass): """ QuaternionMixin holds a foreign key column and its relationship to the referenced table. For information about Mixins, see https://docs.sqlalchemy.org/en/20/orm/declarative_mixins.html """ __abstract__ = True - orientation_to_init: bool = False + orientation_to_init: bool = field(default=False, init=False) @declared_attr def orientation_id(self) -> Mapped[int]: @@ -108,14 +109,14 @@ def orientation(self): return relationship(Quaternion.__tablename__, init=False) -class PoseMixin: +class PoseMixin(MappedAsDataclass): """ PoseMixin holds a foreign key column and its relationship to the referenced table. For information about Mixins, see https://docs.sqlalchemy.org/en/20/orm/declarative_mixins.html """ __abstract__ = True - pose_to_init: bool = False + pose_to_init: bool = field(default=False, init=False) @declared_attr def pose_id(self) -> Mapped[int]: @@ -126,7 +127,7 @@ def pose(self): return relationship(Pose.__tablename__, init=False) -class ProcessMetaData(MappedAsDataclass, _Base): +class ProcessMetaData(_Base): """ ProcessMetaData stores information about the context of this experiment. @@ -163,7 +164,6 @@ def insert(self, session: Session): """Insert this into the database using the session. Skipped if it already is inserted.""" if not self.committed(): session.add(self) - session.commit() return self @classmethod @@ -222,8 +222,6 @@ class Color(Base): class RobotState(PoseMixin, Base): """ORM Representation of a robots state.""" - pose_to_init = True - torso_height: Mapped[float] """The torso height of the robot.""" diff --git a/src/pycram/orm/motion_designator.py b/src/pycram/orm/motion_designator.py index fb2e5d322..bada973b4 100644 --- a/src/pycram/orm/motion_designator.py +++ b/src/pycram/orm/motion_designator.py @@ -5,14 +5,14 @@ The MotionDesignator class is the base class that defines the polymorphic behavior of all other motion designator classes. """ -from typing import Optional +from typing_extensions import Optional from .base import MapperArgsMixin, Designator, PoseMixin -from .object_designator import Object, ObjectMixin +from .object_designator import Object from sqlalchemy.orm import Mapped, mapped_column, relationship from sqlalchemy import ForeignKey -from ..enums import ObjectType +from pycram.datastructures.enums import ObjectType class Motion(MapperArgsMixin, Designator): diff --git a/src/pycram/orm/object_designator.py b/src/pycram/orm/object_designator.py index 78a584282..6f66a785b 100644 --- a/src/pycram/orm/object_designator.py +++ b/src/pycram/orm/object_designator.py @@ -1,17 +1,20 @@ +from dataclasses import field +from typing import Optional -from pycram.orm.base import Base, MapperArgsMixin, PoseMixin -from sqlalchemy.orm import Mapped, mapped_column, declared_attr, relationship +from pycram.orm.base import Base, MapperArgsMixin, PoseMixin, Pose +from sqlalchemy.orm import Mapped, mapped_column, declared_attr, relationship, MappedAsDataclass from sqlalchemy import ForeignKey -from ..enums import ObjectType +from pycram.datastructures.enums import ObjectType -class ObjectMixin: + +class ObjectMixin(MappedAsDataclass): """ ObjectMixin holds a foreign key column and its relationship to the referenced table. For information about Mixins, see https://docs.sqlalchemy.org/en/13/orm/extensions/declarative/mixins.html """ __abstract__ = True - object_to_init: bool = False + object_to_init: bool = field(default=False, init=False) @declared_attr def object_id(self) -> Mapped[int]: @@ -26,7 +29,7 @@ class Object(PoseMixin, Base): """ORM class of pycram.designators.object_designator.ObjectDesignator""" dtype: Mapped[str] = mapped_column(init=False) - type: Mapped[ObjectType] + obj_type: Mapped[Optional[ObjectType]] name: Mapped[str] __mapper_args__ = { diff --git a/src/pycram/orm/task.py b/src/pycram/orm/task.py index 5d2152c1f..d8f19fbba 100644 --- a/src/pycram/orm/task.py +++ b/src/pycram/orm/task.py @@ -1,11 +1,9 @@ """Implementation of ORM classes associated with pycram.task.""" -from typing import Optional +from typing_extensions import Optional from sqlalchemy import ForeignKey -from sqlalchemy.orm import MappedAsDataclass, Mapped, mapped_column, relationship -from .action_designator import Action +from sqlalchemy.orm import Mapped, mapped_column, relationship from .base import Base, Designator -from .motion_designator import Motion -from ..enums import TaskStatus +from pycram.datastructures.enums import TaskStatus import datetime @@ -13,22 +11,17 @@ class TaskTreeNode(Base): """ORM equivalent of pycram.task.TaskTreeNode.""" id: Mapped[int] = mapped_column(autoincrement=True, primary_key=True, init=False) - """id overriden in order to be able to set the remote_side of the parent attribute""" - code_id: Mapped[int] = mapped_column(ForeignKey("Code.id"), default=None) - code: Mapped["Code"] = relationship(init=False) - start_time: Mapped[datetime.datetime] = mapped_column(default=None) - end_time: Mapped[Optional[datetime.datetime]] = mapped_column(default=None) - status: Mapped[TaskStatus] = mapped_column(default=None) - reason: Mapped[Optional[str]] = mapped_column(default=None) - parent_id: Mapped[Optional[int]] = mapped_column(ForeignKey("TaskTreeNode.id"), default=None) - parent: Mapped["TaskTreeNode"] = relationship(foreign_keys=[parent_id], init=False, remote_side=[id]) + action_id: Mapped[Optional[int]] = mapped_column(ForeignKey(f'{Designator.__tablename__}.id'), init=False) + action: Mapped[Optional[Designator]] = relationship(init=False) + start_time: Mapped[datetime.datetime] + end_time: Mapped[Optional[datetime.datetime]] -class Code(Base): - """ORM equivalent of pycram.task.Code.""" + status: Mapped[TaskStatus] + reason: Mapped[Optional[str]] + + parent_id: Mapped[Optional[int]] = mapped_column(ForeignKey("TaskTreeNode.id"), init=False) + parent: Mapped[Optional["TaskTreeNode"]] = relationship(init=False, remote_side=[id]) - function: Mapped[str] = mapped_column(default=None) - designator_id: Mapped[Optional[int]] = mapped_column(ForeignKey(f'{Designator.__tablename__}.id'), default=None) - designator: Mapped[Designator] = relationship(init=False) diff --git a/src/pycram/orm/utils.py b/src/pycram/orm/utils.py index 5efe3a2e6..624773a88 100644 --- a/src/pycram/orm/utils.py +++ b/src/pycram/orm/utils.py @@ -1,17 +1,11 @@ import traceback -from anytree import Node, RenderTree, LevelOrderIter import rospy import sqlalchemy import pycram.orm.base -from pycram.designators.action_designator import * from pycram.designators.object_designator import * import json from pycram.designators.action_designator import * -from pycram.designators.location_designator import * -from pycram.process_module import simulated_robot -from pycram.enums import Arms, ObjectType -from pycram.task import with_tree import pycram.orm diff --git a/src/pycram/orm/views.py b/src/pycram/orm/views.py new file mode 100644 index 000000000..f49b349f5 --- /dev/null +++ b/src/pycram/orm/views.py @@ -0,0 +1,149 @@ +from sqlalchemy.orm import declarative_base +from typing_extensions import Union +import sqlalchemy.orm +from sqlalchemy import table, inspect, event, select, engine, MetaData, Select, TableClause, ExecutableDDLElement +from sqlalchemy.ext.compiler import compiles +from pycram.orm.action_designator import PickUpAction +from pycram.orm.base import Position, RobotState, Pose, Base, Quaternion +from pycram.orm.object_designator import Object +from pycram.orm.task import TaskTreeNode + + +class CreateView(ExecutableDDLElement): + """ + Class that is used to create a view. Every instance will be compiled into a SQL CREATE VIEW statement. + """ + + def __init__(self, name: str, selectable: Select): + self.name = name + self.selectable = selectable + + +class DropView(ExecutableDDLElement): + """ + Class that is used to drop a view. Every instance will be compiled into a SQL DROP VIEW statement. + """ + + def __init__(self, name: str): + self.name = name + + +@compiles(CreateView) +def _create_view(element: CreateView, compiler, **kw) -> str: + """ + Compiles a CreateView instance into a SQL CREATE VIEW statement. + :param element: CreateView instance + :param compiler: compiler + :param kw: keyword arguments + :return: SQL CREATE VIEW statement + """ + + return "CREATE VIEW %s AS %s" % ( + element.name, + compiler.sql_compiler.process(element.selectable, literal_binds=True), + ) + + +@compiles(DropView) +def _drop_view(element: DropView, compiler, **kw) -> str: + """ + Compiles a DropView instance into a SQL DROP VIEW statement. + :param element: DropView instance + :param compiler: compiler + :param kw: keyword arguments + :return: SQL DROP VIEW statement + """ + return "DROP VIEW %s" % element.name + + +def view_exists(ddl: Union[CreateView, DropView], target, connection: engine, **kw) -> bool: + """ + Check if a view exists. + :param ddl: ddl instance + :param target: target object + :param connection: connection + :param kw: keyword arguments + :return: True if the view exists, False otherwise + """ + + return ddl.name in inspect(connection).get_view_names() + + +def view_doesnt_exist(ddl: Union[CreateView, DropView], target, connection: engine, **kw) -> bool: + """ + Check if a view does not exist. + :param ddl: ddl instance + :param target: target object + :param connection: connection + :param kw: keyword arguments + :return: True if the view does not exist, False otherwise + """ + + return not view_exists(ddl, target, connection, **kw) + + +def view(name: str, metadata: MetaData, selectable: Select) -> TableClause: + """ + Function used to control view creation and deletion. It will listen to the after_create and before_drop events + of the metadata object in order to either create or drop the view. The view needs to have a column id. + """ + view = table(name) + + view._columns._populate_separate_keys( + col._make_proxy(view) for col in selectable.selected_columns + ) + + event.listen(metadata, "after_create", CreateView(name, selectable).execute_if(callable_=view_doesnt_exist)) + event.listen(metadata, "before_drop", DropView(name).execute_if(callable_=view_exists)) + + return view + + +base = declarative_base(metadata=Base.metadata) + + +class PickUpWithContextView(base): + """ + View for pickup actions with context. + """ + + __robot_position: Position = sqlalchemy.orm.aliased(Position, flat=True) + """ + 3D Vector of robot position + """ + + __robot_pose: Pose = sqlalchemy.orm.aliased(Pose, flat=True) + """ + Complete robot pose + """ + + __object_position: Position = sqlalchemy.orm.aliased(Position, flat=True) + """ + 3D Vector for object position + """ + + __relative_x = (__robot_position.x - __object_position.x) + """ + Distance on x axis between robot and object + """ + + __relative_y = (__robot_position.y - __object_position.y) + """ + Distance on y axis between robot and object + """ + + __table__ = view("PickUpWithContextView", Base.metadata, + (select(PickUpAction.id.label("id"), PickUpAction.arm.label("arm"), + PickUpAction.grasp.label("grasp"), RobotState.torso_height.label("torso_height"), + __relative_x.label("relative_x"), __relative_y.label("relative_y"), + Quaternion.x.label("quaternion_x"), Quaternion.y.label("quaternion_y"), + Quaternion.z.label("quaternion_z"), Quaternion.w.label("quaternion_w"), + Object.obj_type.label("obj_type"), TaskTreeNode.status.label("status")) + .join(TaskTreeNode.action.of_type(PickUpAction)) + .join(PickUpAction.robot_state) + .join(__robot_pose, RobotState.pose) + .join(__robot_position, __robot_pose.position) + .join(Pose.orientation) + .join(PickUpAction.object) + .join(Object.pose) + .join(__object_position, Pose.position))) diff --git a/src/pycram/plan_failures.py b/src/pycram/plan_failures.py index 584a13e7b..dceb68013 100644 --- a/src/pycram/plan_failures.py +++ b/src/pycram/plan_failures.py @@ -385,3 +385,13 @@ class SustainedFailure(PlanFailure): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) + + +class ReasoningError(PlanFailure): + def __init__(*args, **kwargs): + super().__init__(*args, **kwargs) + + +class CollisionError(PlanFailure): + def __init__(*args, **kwargs): + super().__init__(*args, **kwargs) diff --git a/src/pycram/pose_generator_and_validator.py b/src/pycram/pose_generator_and_validator.py index f959fd126..4582699cc 100644 --- a/src/pycram/pose_generator_and_validator.py +++ b/src/pycram/pose_generator_and_validator.py @@ -1,116 +1,164 @@ import tf import numpy as np -import rospy -import pybullet as p -from .bullet_world import Object, BulletWorld, Use_shadow_world -from .bullet_world_reasoning import contact +from .world import World +from .world_concepts.world_object import Object +from .world_reasoning import contact from .costmaps import Costmap -from .pose import Pose, Transform +from .local_transformer import LocalTransformer +from .datastructures.pose import Pose, Transform +from .robot_description import ManipulatorDescription from .robot_descriptions import robot_description from .external_interfaces.ik import request_ik from .plan_failures import IKError from .helper import _apply_ik -from typing import Type, Tuple, List, Union, Dict, Iterable +from typing_extensions import Tuple, List, Union, Dict, Iterable -def pose_generator(costmap: Costmap, number_of_samples=100, orientation_generator=None) -> Iterable: +class PoseGenerator: """ - A generator that crates pose candidates from a given costmap. The generator - selects the highest 100 values and returns the corresponding positions. + Crates pose candidates from a given costmap. The generator + selects the highest values, amount is given by number_of_sample, and returns the corresponding positions. Orientations are calculated such that the Robot faces the center of the costmap. - - :param costmap: The costmap from which poses should be sampled. - :param number_of_samples: The number of samples from the costmap that should be returned at max - :param orientation_generator: function that generates an orientation given a position and the origin of the costmap - :Yield: A tuple of position and orientation """ - if not orientation_generator: - orientation_generator = generate_orientation - - # Determines how many positions should be sampled from the costmap - if number_of_samples == -1: - number_of_samples = costmap.map.flatten().shape[0] - indices = np.argpartition(costmap.map.flatten(), -number_of_samples)[-number_of_samples:] - indices = np.dstack(np.unravel_index(indices, costmap.map.shape)).reshape(number_of_samples, 2) - - height = costmap.map.shape[0] - width = costmap.map.shape[1] - center = np.array([height // 2, width // 2]) - for ind in indices: - if costmap.map[ind[0]][ind[1]] == 0: - continue - # The position is calculated by creating a vector from the 2D position in the costmap (given by x and y) - # and the center of the costmap (since this is the origin). This vector is then turned into a transformation - # and muiltiplied with the transformation of the origin. - vector_to_origin = (center - ind) * costmap.resolution - point_to_origin = Transform([*vector_to_origin, 0], frame="point", child_frame="origin") - origin_to_map = costmap.origin.to_transform("origin").invert() - point_to_map = point_to_origin * origin_to_map - map_to_point = point_to_map.invert() - - orientation = orientation_generator(map_to_point.translation_as_list(), costmap.origin) - yield Pose(map_to_point.translation_as_list(), orientation) + current_orientation_generator = None + """ + If no orientation generator is given, this generator is used to generate the orientation of the robot. + """ + override_orientation_generator = None + """ + Override the orientation generator with a custom generator, which will be used regardless of the current_orientation_generator. + """ -def height_generator() -> float: - pass + def __init__(self, costmap: Costmap, number_of_samples=100, orientation_generator=None): + """ + :param costmap: The costmap from which poses should be sampled. + :param number_of_samples: The number of samples from the costmap that should be returned at max + :param orientation_generator: function that generates an orientation given a position and the origin of the costmap + """ + + if not PoseGenerator.current_orientation_generator: + PoseGenerator.current_orientation_generator = PoseGenerator.generate_orientation + + self.costmap = costmap + self.number_of_samples = number_of_samples + self.orientation_generator = orientation_generator if orientation_generator else PoseGenerator.current_orientation_generator + if PoseGenerator.override_orientation_generator: + self.orientation_generator = PoseGenerator.override_orientation_generator + + def __iter__(self) -> Iterable: + """ + A generator that crates pose candidates from a given costmap. The generator + selects the highest 100 values and returns the corresponding positions. + Orientations are calculated such that the Robot faces the center of the costmap. + + :Yield: A tuple of position and orientation + """ + + # Determines how many positions should be sampled from the costmap + if self.number_of_samples == -1: + self.number_of_samples = self.costmap.map.flatten().shape[0] + indices = np.argpartition(self.costmap.map.flatten(), -self.number_of_samples)[-self.number_of_samples:] + indices = np.dstack(np.unravel_index(indices, self.costmap.map.shape)).reshape(self.number_of_samples, 2) + + height = self.costmap.map.shape[0] + width = self.costmap.map.shape[1] + center = np.array([height // 2, width // 2]) + for ind in indices: + if self.costmap.map[ind[0]][ind[1]] == 0: + continue + # The position is calculated by creating a vector from the 2D position in the costmap (given by x and y) + # and the center of the costmap (since this is the origin). This vector is then turned into a transformation + # and muiltiplied with the transformation of the origin. + vector_to_origin = (center - ind) * self.costmap.resolution + point_to_origin = Transform([*vector_to_origin, 0], frame="point", child_frame="origin") + origin_to_map = self.costmap.origin.to_transform("origin").invert() + point_to_map = point_to_origin * origin_to_map + map_to_point = point_to_map.invert() + + orientation = self.orientation_generator(map_to_point.translation_as_list(), self.costmap.origin) + yield Pose(map_to_point.translation_as_list(), orientation) + + @staticmethod + def height_generator() -> float: + pass + @staticmethod + def generate_orientation(position: List[float], origin: Pose) -> List[float]: + """ + This method generates the orientation for a given position in a costmap. The + orientation is calculated such that the robot faces the origin of the costmap. + This generation is done by simply calculating the arctan between the position, + in the costmap, and the origin of the costmap. -def generate_orientation(position: List[float], origin: Pose) -> List[float]: - """ - This method generates the orientation for a given position in a costmap. The - orientation is calculated such that the robot faces the origin of the costmap. - This generation is done by simply calculating the arctan between the position, - in the costmap, and the origin of the costmap. - - :param position: The position in the costmap. This position is already converted - to the world coordinate frame. - :param origin: The origin of the costmap. This is also the point which the - robot should face. - :return: A quaternion of the calculated orientation - """ - angle = np.arctan2(position[1]-origin.position.y, position[0]-origin.position.x) + np.pi - quaternion = list(tf.transformations.quaternion_from_euler(0, 0, angle, axes="sxyz")) - return quaternion + :param position: The position in the costmap. This position is already converted to the world coordinate frame. + :param origin: The origin of the costmap. This is also the point which the robot should face. + :return: A quaternion of the calculated orientation + """ + angle = np.arctan2(position[1] - origin.position.y, position[0] - origin.position.x) + np.pi + quaternion = list(tf.transformations.quaternion_from_euler(0, 0, angle, axes="sxyz")) + return quaternion def visibility_validator(pose: Pose, robot: Object, object_or_pose: Union[Object, Pose], - world: BulletWorld) -> bool: + world: World) -> bool: """ This method validates if the robot can see the target position from a given pose candidate. The target position can either be a position, in world coordinate - system, or an object in the BulletWorld. The validation is done by shooting a + system, or an object in the World. The validation is done by shooting a ray from the camera to the target position and checking that it does not collide with anything else. :param pose: The pose candidate that should be validated :param robot: The robot object for which this should be validated - :param object_or_pose: The target position or object for which the pose - candidate should be validated. - :param world: The BulletWorld instance in which this should be validated. + :param object_or_pose: The target position or object for which the pose candidate should be validated. + :param world: The World instance in which this should be validated. :return: True if the target is visible for the robot, None in any other case. """ robot_pose = robot.get_pose() - if type(object_or_pose) == Object: + if isinstance(object_or_pose, Object): robot.set_pose(pose) camera_pose = robot.get_link_pose(robot_description.get_camera_frame()) robot.set_pose(Pose([100, 100, 0], [0, 0, 0, 1])) - ray = p.rayTest(camera_pose.position_as_list(), object_or_pose.get_pose().position_as_list(), - physicsClientId=world.client_id) - res = ray[0][0] == object_or_pose.id + ray = world.ray_test(camera_pose.position_as_list(), object_or_pose.get_position_as_list()) + res = ray == object_or_pose.id else: robot.set_pose(pose) camera_pose = robot.get_link_pose(robot_description.get_camera_frame()) robot.set_pose(Pose([100, 100, 0], [0, 0, 0, 1])) - ray = p.rayTest(camera_pose.position_as_list(), object_or_pose, physicsClientId=world.client_id) - res = ray[0][0] == -1 + # TODO: Check if this is correct + ray = world.ray_test(camera_pose.position_as_list(), object_or_pose) + res = ray == -1 robot.set_pose(robot_pose) return res +def _in_contact(robot: Object, obj: Object, allowed_collision: Dict[Object, List[str]], + allowed_robot_links: List[str]) -> bool: + """ + This method checks if a given robot is in contact with a given object. + + :param robot: The robot object that should be checked for contact. + :param obj: The object that should be checked for contact with the robot. + :param allowed_collision: A dictionary that contains the allowed collisions for links of each object in the world. + :param allowed_robot_links: A list of links of the robot that are allowed to be in contact with the object. + :return: True if the robot is in contact with the object and False otherwise. + """ + in_contact, contact_links = contact(robot, obj, return_links=True) + allowed_links = allowed_collision[obj] if obj in allowed_collision.keys() else [] + + if in_contact: + for link in contact_links: + if link[0].name in allowed_robot_links or link[1].name in allowed_links: + in_contact = False + # TODO: in_contact is never set to True after it was set to False is that correct? + # TODO: If it is correct, then this loop should break after the first contact is found + return in_contact + + def reachability_validator(pose: Pose, robot: Object, target: Union[Object, Pose], @@ -122,86 +170,79 @@ def reachability_validator(pose: Pose, the validator returns True and False in any other case. :param pose: The pose candidate for which the reachability should be validated - :param robot: The robot object in the BulletWorld for which the reachability - should be validated. - :param target: The target position or object instance which should be the - target for reachability. - :param allowed_collision: - :return: True if the target is reachable for the robot and False in any other - case. + :param robot: The robot object in the World for which the reachability should be validated. + :param target: The target position or object instance which should be the target for reachability. + :param allowed_collision: dict of objects with which the robot is allowed to collide each object correlates to a list of links of which this object consists + :return: True if the target is reachable for the robot and False in any other case. """ if type(target) == Object: target = target.get_pose() robot.set_pose(pose) + manipulator_descs = list( + filter(lambda chain: isinstance(chain[1], ManipulatorDescription), robot_description.chains.items())) - left_gripper = robot_description.get_tool_frame('left') - right_gripper = robot_description.get_tool_frame('right') - - # left_joints = robot_description._safely_access_chains('left').joints - left_joints = robot_description.chains['left'].joints - # right_joints = robot_description._safely_access_chains('right').joints - right_joints = robot_description.chains['right'].joints # TODO Make orientation adhere to grasping orientation res = False arms = [] - in_contact = False + for name, chain in manipulator_descs: + retract_target_pose = LocalTransformer().transform_pose(target, robot.get_link_tf_frame(chain.tool_frame)) + retract_target_pose.position.x -= 0.07 # Care hard coded value copied from PlaceAction class + + # retract_pose needs to be in world frame? + retract_target_pose = LocalTransformer().transform_pose(retract_target_pose, "map") + + joints = robot_description.chains[name].joints + tool_frame = robot_description.get_tool_frame(name) + + # TODO Make orientation adhere to grasping orientation + in_contact = False + + joint_state_before_ik = robot.get_positions_of_all_joints() + try: + # test the possible solution and apply it to the robot + resp = request_ik(target, robot, joints, tool_frame) + _apply_ik(robot, resp, joints) + + in_contact = collision_check(robot, allowed_collision) + if not in_contact: # only check for retract pose if pose worked + resp = request_ik(retract_target_pose, robot, joints, tool_frame) + _apply_ik(robot, resp, joints) + in_contact = collision_check(robot, allowed_collision) + if not in_contact: + arms.append(name) + except IKError: + pass + finally: + robot.set_joint_positions(joint_state_before_ik) + if arms: + res = True + return res, arms + +def collision_check(robot: Object, allowed_collision: list): + """ + This method checks if a given robot collides with any object within the world + which it is not allowed to collide with. + This is done checking iterating over every object within the world and checking + if the robot collides with it. Careful the floor will be ignored. + If there is a collision with an object that was not within the allowed collision + list the function returns True else it will return False + + :param robot: The robot object in the (Bullet)World where it should be checked if it collides with something + :param allowed_collision: dict of objects with which the robot is allowed to collide each object correlates to a list of links of which this object consists + :return: True if the target is reachable for the robot and False in any other case. + """ + in_contact = False allowed_robot_links = [] if robot in allowed_collision.keys(): allowed_robot_links = allowed_collision[robot] - joint_state_before_ik=robot._current_joint_states - try: - # resp = request_ik(base_link, end_effector, target_diff, robot, left_joints) - resp = request_ik(target, robot, left_joints, left_gripper) - - _apply_ik(robot, resp, left_joints) - - for obj in BulletWorld.current_bullet_world.objects: - if obj.name == "floor": - continue - in_contact, contact_links = contact(robot, obj, return_links=True) - allowed_links = allowed_collision[obj] if obj in allowed_collision.keys() else [] - - if in_contact: - for link in contact_links: - - if link[0] in allowed_robot_links or link[1] in allowed_links: - in_contact = False - - if not in_contact: - arms.append("left") - res = True - except IKError: - pass - finally: - robot.set_joint_states(joint_state_before_ik) - - try: - # resp = request_ik(base_link, end_effector, target_diff, robot, right_joints) - resp = request_ik(target, robot, right_joints, right_gripper) - - _apply_ik(robot, resp, right_joints) - - for obj in BulletWorld.current_bullet_world.objects: - if obj.name == "floor": - continue - in_contact, contact_links = contact(robot, obj, return_links=True) - allowed_links = allowed_collision[obj] if obj in allowed_collision.keys() else [] - - if in_contact: - for link in contact_links: + for obj in World.current_world.objects: + if obj.name == "floor": + continue + in_contact= _in_contact(robot, obj, allowed_collision, allowed_robot_links) - if link[0] in allowed_robot_links or link[1] in allowed_links: - in_contact = False + return in_contact - if not in_contact: - arms.append("right") - res = True - except IKError: - pass - finally: - robot.set_joint_states(joint_state_before_ik) - return res, arms diff --git a/src/pycram/process_module.py b/src/pycram/process_module.py index 351798350..16eff4a77 100644 --- a/src/pycram/process_module.py +++ b/src/pycram/process_module.py @@ -5,26 +5,26 @@ """ # used for delayed evaluation of typing until python 3.11 becomes mainstream from __future__ import annotations - import inspect import threading import time from abc import ABC -from threading import Lock +from typing_extensions import Callable, Type, Any, Union import rospy -from .designator import MotionDesignatorDescription -from .fluent import Fluent -from typing import Callable, List, Type, Any, Union from .language import Language - from .robot_descriptions import robot_description +from typing_extensions import TYPE_CHECKING + +if TYPE_CHECKING: + from .designators.motion_designator import BaseMotion class ProcessModule: """ - Implementation of process modules. Process modules are the part that communicate with the outer world to execute designators. + Implementation of process modules. Process modules are the part that communicate with the outer world to execute + designators. """ execution_delay = True """ @@ -40,14 +40,14 @@ def __init__(self, lock): """Create a new process module.""" self._lock = lock - def _execute(self, designator: MotionDesignatorDescription.Motion) -> Any: + def _execute(self, designator: BaseMotion) -> Any: """ Helper method for internal usage only. This method is to be overwritten instead of the execute method. """ pass - def execute(self, designator: MotionDesignatorDescription.Motion) -> Any: + def execute(self, designator: BaseMotion) -> Any: """ Execute the given designator. If there is already another process module of the same kind the `self._lock` will lock this thread until the execution of that process module is finished. This implicitly queues the execution of @@ -78,8 +78,10 @@ class RealRobot: with real_robot: some designators """ + def __init__(self): self.pre: str = "" + self.pre_delay: bool = False def __enter__(self): """ @@ -88,13 +90,16 @@ def __enter__(self): """ self.pre = ProcessModuleManager.execution_type ProcessModuleManager.execution_type = "real" + self.pre_delay = ProcessModule.execution_delay + ProcessModule.execution_delay = False - def __exit__(self, type, value, traceback): + def __exit__(self, _type, value, traceback): """ Exit method for the 'with' scope, sets the :py:attr:`~ProcessModuleManager.execution_type` to the previously used one. """ ProcessModuleManager.execution_type = self.pre + ProcessModule.execution_delay = self.pre_delay def __call__(self): return self @@ -102,8 +107,8 @@ def __call__(self): class SimulatedRobot: """ - Management class for executing designators on the simulated robot. This is intended to be used in a with environment. - When importing this class an instance is imported instead. + Management class for executing designators on the simulated robot. This is intended to be used in + a with environment. When importing this class an instance is imported instead. Example: @@ -112,6 +117,7 @@ class SimulatedRobot: with simulated_robot: some designators """ + def __init__(self): self.pre: str = "" @@ -123,7 +129,7 @@ def __enter__(self): self.pre = ProcessModuleManager.execution_type ProcessModuleManager.execution_type = "simulated" - def __exit__(self, type, value, traceback): + def __exit__(self, _type, value, traceback): """ Exit method for the 'with' scope, sets the :py:attr:`~ProcessModuleManager.execution_type` to the previously used one. @@ -149,6 +155,7 @@ def plan(): :param func: Function this decorator is annotating :return: The decorated function wrapped into the decorator """ + def wrapper(*args, **kwargs): pre = ProcessModuleManager.execution_type ProcessModuleManager.execution_type = "real" @@ -174,6 +181,7 @@ def plan(): :param func: Function this decorator is annotating :return: The decorated function wrapped into the decorator """ + def wrapper(*args, **kwargs): pre = ProcessModuleManager.execution_type ProcessModuleManager.execution_type = "simulated" @@ -237,6 +245,7 @@ def get_manager() -> Union[ProcessModuleManager, None]: :return: ProcessModuleManager instance of the current robot """ manager = None + _default_manager = None if not ProcessModuleManager.execution_type: rospy.logerr( f"No execution_type is set, did you use the with_simulated_robot or with_real_robot decorator?") @@ -246,17 +255,23 @@ def get_manager() -> Union[ProcessModuleManager, None]: if pm_manager.robot_name == robot_description.name: manager = pm_manager if pm_manager.robot_name == "default": - default_manager = pm_manager + _default_manager = pm_manager if manager: return manager + elif _default_manager: + rospy.logwarn_once(f"No Process Module Manager found for robot: '{robot_description.name}'" + f", using default process modules") + return _default_manager else: - rospy.logwarn_once(f"No Process Module Manager found for robot: '{robot_description.name}', using default process modules") - return default_manager + rospy.logerr(f"No Process Module Manager found for robot: '{robot_description.name}'" + f", and no default process modules available") + return None def navigate(self) -> Type[ProcessModule]: """ - Returns the Process Module for navigating the robot with respect to the :py:attr:`~ProcessModuleManager.execution_type` + Returns the Process Module for navigating the robot with respect to + the :py:attr:`~ProcessModuleManager.execution_type` :return: The Process Module for navigating """ @@ -283,7 +298,8 @@ def place(self) -> Type[ProcessModule]: def looking(self) -> Type[ProcessModule]: """ - Returns the Process Module for looking at a point with respect to the :py:attr:`~ProcessModuleManager.execution_type` + Returns the Process Module for looking at a point with respect to + the :py:attr:`~ProcessModuleManager.execution_type` :return: The Process Module for looking at a specific point """ @@ -292,7 +308,8 @@ def looking(self) -> Type[ProcessModule]: def detecting(self) -> Type[ProcessModule]: """ - Returns the Process Module for detecting an object with respect to the :py:attr:`~ProcessModuleManager.execution_type` + Returns the Process Module for detecting an object with respect to + the :py:attr:`~ProcessModuleManager.execution_type` :return: The Process Module for detecting an object """ @@ -301,7 +318,8 @@ def detecting(self) -> Type[ProcessModule]: def move_tcp(self) -> Type[ProcessModule]: """ - Returns the Process Module for moving the Tool Center Point with respect to the :py:attr:`~ProcessModuleManager.execution_type` + Returns the Process Module for moving the Tool Center Point with respect to + the :py:attr:`~ProcessModuleManager.execution_type` :return: The Process Module for moving the TCP """ @@ -340,7 +358,8 @@ def move_joints(self) -> Type[ProcessModule]: def move_gripper(self) -> Type[ProcessModule]: """ - Returns the Process Module for moving the gripper with respect to the :py:attr:`~ProcessModuleManager.execution_type` + Returns the Process Module for moving the gripper with respect to + the :py:attr:`~ProcessModuleManager.execution_type` :return: The Process Module for moving the gripper """ @@ -349,7 +368,8 @@ def move_gripper(self) -> Type[ProcessModule]: def open(self) -> Type[ProcessModule]: """ - Returns the Process Module for opening drawers with respect to the :py:attr:`~ProcessModuleManager.execution_type` + Returns the Process Module for opening drawers with respect to + the :py:attr:`~ProcessModuleManager.execution_type` :return: The Process Module for opening drawers """ @@ -358,7 +378,8 @@ def open(self) -> Type[ProcessModule]: def close(self) -> Type[ProcessModule]: """ - Returns the Process Module for closing drawers with respect to the :py:attr:`~ProcessModuleManager.execution_type` + Returns the Process Module for closing drawers with respect to + the :py:attr:`~ProcessModuleManager.execution_type` :return: The Process Module for closing drawers """ diff --git a/src/pycram/process_modules/__init__.py b/src/pycram/process_modules/__init__.py index e6b5fdc67..31d37839a 100644 --- a/src/pycram/process_modules/__init__.py +++ b/src/pycram/process_modules/__init__.py @@ -1,11 +1,13 @@ from .pr2_process_modules import Pr2Manager from .boxy_process_modules import BoxyManager from .donbot_process_modules import DonbotManager -from .hsr_process_modules import HSRManager +from .hsrb_process_modules import HSRBManager from .default_process_modules import DefaultManager +from .stretch_process_modules import StretchManager Pr2Manager() BoxyManager() DonbotManager() -HSRManager() +HSRBManager() DefaultManager() +StretchManager() diff --git a/src/pycram/process_modules/boxy_process_modules.py b/src/pycram/process_modules/boxy_process_modules.py index 4ce16bf96..e33570e52 100644 --- a/src/pycram/process_modules/boxy_process_modules.py +++ b/src/pycram/process_modules/boxy_process_modules.py @@ -1,19 +1,15 @@ -import time from threading import Lock - import numpy as np -import pybullet as p - -import pycram.bullet_world_reasoning as btr +from .. import world_reasoning as btr import pycram.helper as helper -from ..bullet_world import BulletWorld from ..designators.motion_designator import * -from ..enums import JointType +from ..datastructures.enums import JointType from ..external_interfaces.ik import request_ik -from ..local_transformer import LocalTransformer as local_tf, LocalTransformer + +from ..world import World +from ..local_transformer import LocalTransformer from ..process_module import ProcessModule, ProcessModuleManager from ..robot_descriptions import robot_description -from tf.transformations import euler_from_quaternion, quaternion_from_euler def _park_arms(arm): @@ -23,7 +19,7 @@ def _park_arms(arm): :return: None """ - robot = BulletWorld.robot + robot = World.robot if arm == "right": for joint, pose in robot_description.get_static_joint_chain("right", "park").items(): robot.set_joint_state(joint, pose) @@ -37,66 +33,17 @@ class BoxyNavigation(ProcessModule): The process module to move the robot from one position to another. """ - def _execute(self, desig: MoveMotion.Motion): - robot = BulletWorld.robot + def _execute(self, desig: MoveMotion): + robot = World.robot robot.set_pose(desig.target) -class BoxyPickUp(ProcessModule): - """ - This process module is for picking up a given object. - The object has to be reachable for this process module to succeed. - """ - - def _execute(self, desig: PickUpMotion.Motion): - object = desig.object_desig.bullet_world_object - robot = BulletWorld.robot - grasp = robot_description.grasps.get_orientation_for_grasp(desig.grasp) - target = object.get_pose() - target.orientation.x = grasp[0] - target.orientation.y = grasp[1] - target.orientation.z = grasp[2] - target.orientation.w = grasp[3] - - arm = desig.arm - - _move_arm_tcp(target, robot, arm) - tool_frame = robot_description.get_tool_frame(arm) - robot.attach(object, tool_frame) - - -class BoxyPlace(ProcessModule): - """ - This process module places an object at the given position in world coordinate frame. - """ - - def _execute(self, desig: PlaceMotion.Motion): - """ - - :param desig: A PlaceMotion - :return: - """ - object = desig.object.bullet_world_object - robot = BulletWorld.robot - arm = desig.arm - - # Transformations such that the target position is the position of the object and not the tcp - object_pose = object.get_pose() - local_tf = LocalTransformer() - tcp_to_object = local_tf.transform_pose(object_pose, - robot.get_link_tf_frame(robot_description.get_tool_frame(arm))) - target_diff = desig.target.to_transform("target").inverse_times(tcp_to_object.to_transform("object")).to_pose() - - _move_arm_tcp(target_diff, robot, arm) - robot.detach(object) - - class BoxyOpen(ProcessModule): """ Low-level implementation of opening a container in the simulation. Assumes the handle is already grasped. """ - def _execute(self, desig: OpeningMotion.Motion): + def _execute(self, desig: OpeningMotion): part_of_object = desig.object_part.bullet_world_object container_joint = part_of_object.find_joint_above(desig.object_part.name, JointType.PRISMATIC) @@ -104,7 +51,7 @@ def _execute(self, desig: OpeningMotion.Motion): goal_pose = btr.link_pose_for_joint_config(part_of_object, { container_joint: part_of_object.get_joint_limits(container_joint)[1] - 0.05}, desig.object_part.name) - _move_arm_tcp(goal_pose, BulletWorld.robot, desig.arm) + _move_arm_tcp(goal_pose, World.robot, desig.arm) desig.object_part.bullet_world_object.set_joint_state(container_joint, part_of_object.get_joint_limits( @@ -115,7 +62,7 @@ class BoxyClose(ProcessModule): """ Low-level implementation that lets the robot close a grasped container, in simulation """ - def _execute(self, desig: ClosingMotion.Motion): + def _execute(self, desig: ClosingMotion): part_of_object = desig.object_part.bullet_world_object container_joint = part_of_object.find_joint_above(desig.object_part.name, JointType.PRISMATIC) @@ -123,7 +70,7 @@ def _execute(self, desig: ClosingMotion.Motion): goal_pose = btr.link_pose_for_joint_config(part_of_object, { container_joint: part_of_object.get_joint_limits(container_joint)[0]}, desig.object_part.name) - _move_arm_tcp(goal_pose, BulletWorld.robot, desig.arm) + _move_arm_tcp(goal_pose, World.robot, desig.arm) desig.object_part.bullet_world_object.set_joint_state(container_joint, part_of_object.get_joint_limits( @@ -150,26 +97,27 @@ class BoxyMoveHead(ProcessModule): def _execute(self, desig): target = desig.target - robot = BulletWorld.robot + robot = World.robot local_transformer = LocalTransformer() pose_in_shoulder = local_transformer.transform_pose(target, robot.get_link_tf_frame("neck_shoulder_link")) if pose_in_shoulder.position.x >= 0 and pose_in_shoulder.position.x >= abs(pose_in_shoulder.position.y): - robot.set_joint_states(robot_description.get_static_joint_chain("neck", "front")) + robot.set_joint_positions(robot_description.get_static_joint_chain("neck", "front")) if pose_in_shoulder.position.y >= 0 and pose_in_shoulder.position.y >= abs(pose_in_shoulder.position.x): - robot.set_joint_states(robot_description.get_static_joint_chain("neck", "neck_right")) + robot.set_joint_positions(robot_description.get_static_joint_chain("neck", "neck_right")) if pose_in_shoulder.position.x <= 0 and abs(pose_in_shoulder.position.x) > abs(pose_in_shoulder.position.y): - robot.set_joint_states(robot_description.get_static_joint_chain("neck", "back")) + robot.set_joint_positions(robot_description.get_static_joint_chain("neck", "back")) if pose_in_shoulder.position.y <= 0 and abs(pose_in_shoulder.position.y) > abs(pose_in_shoulder.position.x): - robot.set_joint_states(robot_description.get_static_joint_chain("neck", "neck_left")) + robot.set_joint_positions(robot_description.get_static_joint_chain("neck", "neck_left")) pose_in_shoulder = local_transformer.transform_pose(target, robot.get_link_tf_frame("neck_shoulder_link")) new_pan = np.arctan2(pose_in_shoulder.position.y, pose_in_shoulder.position.x) - robot.set_joint_state("neck_shoulder_pan_joint", new_pan + robot.get_joint_state("neck_shoulder_pan_joint")) + robot.set_joint_position("neck_shoulder_pan_joint", + new_pan + robot.get_joint_position("neck_shoulder_pan_joint")) class BoxyMoveGripper(ProcessModule): @@ -179,10 +127,10 @@ class BoxyMoveGripper(ProcessModule): """ def _execute(self, desig): - robot = BulletWorld.robot + robot = World.robot gripper = desig.gripper motion = desig.motion - robot.set_joint_states(robot_description.get_static_gripper_chain(gripper, motion)) + robot.set_joint_positions(robot_description.get_static_gripper_chain(gripper, motion)) class BoxyDetecting(ProcessModule): @@ -192,14 +140,14 @@ class BoxyDetecting(ProcessModule): """ def _execute(self, desig): - robot = BulletWorld.robot + robot = World.robot object_type = desig.object_type # Should be "wide_stereo_optical_frame" cam_frame_name = robot_description.get_camera_frame() # should be [0, 0, 1] front_facing_axis = robot_description.front_facing_axis - objects = BulletWorld.current_bullet_world.get_objects_by_type(object_type) + objects = World.current_world.get_object_by_type(object_type) for obj in objects: if btr.visible(obj, robot.get_link_pose(cam_frame_name), front_facing_axis): return obj @@ -210,9 +158,9 @@ class BoxyMoveTCP(ProcessModule): This process moves the tool center point of either the right or the left arm. """ - def _execute(self, desig: MoveTCPMotion.Motion): + def _execute(self, desig: MoveTCPMotion): target = desig.target - robot = BulletWorld.robot + robot = World.robot _move_arm_tcp(target, robot, desig.arm) @@ -223,13 +171,13 @@ class BoxyMoveArmJoints(ProcessModule): list that should be applied or a pre-defined position can be used, such as "parking" """ - def _execute(self, desig: MoveArmJointsMotion.Motion): + def _execute(self, desig: MoveArmJointsMotion): - robot = BulletWorld.robot + robot = World.robot if desig.right_arm_poses: - robot.set_joint_states(desig.right_arm_poses) + robot.set_joint_positions(desig.right_arm_poses) if desig.left_arm_poses: - robot.set_joint_states(desig.left_arm_poses) + robot.set_joint_positions(desig.left_arm_poses) class BoxyWorldStateDetecting(ProcessModule): @@ -237,9 +185,9 @@ class BoxyWorldStateDetecting(ProcessModule): This process module detectes an object even if it is not in the field of view of the robot. """ - def _execute(self, desig: WorldStateDetectingMotion.Motion): + def _execute(self, desig: WorldStateDetectingMotion): obj_type = desig.object_type - return list(filter(lambda obj: obj.type == obj_type, BulletWorld.current_bullet_world.objects))[0] + return list(filter(lambda obj: obj.type == obj_type, World.current_bullet_world.objects))[0] def _move_arm_tcp(target: Pose, robot: Object, arm: str) -> None: @@ -256,8 +204,6 @@ class BoxyManager(ProcessModuleManager): def __init__(self): super().__init__("boxy") self._navigate_lock = Lock() - self._pick_up_lock = Lock() - self._place_lock = Lock() self._looking_lock = Lock() self._detecting_lock = Lock() self._move_tcp_lock = Lock() @@ -272,14 +218,6 @@ def navigate(self): if ProcessModuleManager.execution_type == "simulated": return BoxyNavigation(self._navigate_lock) - def pick_up(self): - if ProcessModuleManager.execution_type == "simulated": - return BoxyPickUp(self._pick_up_lock) - - def place(self): - if ProcessModuleManager.execution_type == "simulated": - return BoxyPlace(self._place_lock) - def looking(self): if ProcessModuleManager.execution_type == "simulated": return BoxyMoveHead(self._looking_lock) diff --git a/src/pycram/process_modules/default_process_modules.py b/src/pycram/process_modules/default_process_modules.py index 390558bd9..fcd10ed05 100644 --- a/src/pycram/process_modules/default_process_modules.py +++ b/src/pycram/process_modules/default_process_modules.py @@ -1,79 +1,34 @@ from threading import Lock -import pycram.bullet_world_reasoning as btr import numpy as np -from ..robot_descriptions import robot_description -from ..process_module import ProcessModule, ProcessModuleManager -from ..bullet_world import BulletWorld -from ..external_interfaces.ik import request_ik, IKError +from ..datastructures.enums import JointType +from ..external_interfaces.ik import request_ik from ..helper import _apply_ik +from ..process_module import ProcessModule +from ..robot_descriptions import robot_description from ..local_transformer import LocalTransformer from ..designators.motion_designator import * -from ..enums import JointType - +from ..world_reasoning import visible, link_pose_for_joint_config class DefaultNavigation(ProcessModule): """ The process module to move the robot from one position to another. """ - def _execute(self, desig: MoveMotion.Motion): - robot = BulletWorld.robot + def _execute(self, desig: MoveMotion): + robot = World.robot robot.set_pose(desig.target) - -class DefaultPickUp(ProcessModule): - """ - This process module is for picking up a given object. - The object has to be reachable for this process module to succeed. - """ - - def _execute(self, desig: PickUpMotion.Motion): - object = desig.object_desig.bullet_world_object - robot = BulletWorld.robot - grasp = robot_description.grasps.get_orientation_for_grasp(desig.grasp) - target = object.get_pose() - target.orientation.x = grasp[0] - target.orientation.y = grasp[1] - target.orientation.z = grasp[2] - target.orientation.w = grasp[3] - - arm = desig.arm - - _move_arm_tcp(target, robot, arm) - tool_frame = robot_description.get_tool_frame(arm) - robot.attach(object, tool_frame) - - -class DefaultPlace(ProcessModule): - """ - This process module places an object at the given position in world coordinate frame. - """ - - def _execute(self, desig: PlaceMotion.Motion): - """ - - :param desig: A PlaceMotion - :return: - """ - object = desig.object.bullet_world_object - robot = BulletWorld.robot - arm = desig.arm - - _move_arm_tcp(desig.target, robot, arm) - robot.detach(object) - - class DefaultMoveHead(ProcessModule): """ This process module moves the head to look at a specific point in the world coordinate frame. This point can either be a position or an object. """ - def _execute(self, desig: LookingMotion.Motion): + def _execute(self, desig: LookingMotion): target = desig.target - robot = BulletWorld.robot + robot = World.robot local_transformer = LocalTransformer() @@ -88,11 +43,11 @@ def _execute(self, desig: LookingMotion.Motion): new_pan = np.arctan2(pose_in_pan.position.y, pose_in_pan.position.x) new_tilt = np.arctan2(pose_in_tilt.position.z, pose_in_tilt.position.x ** 2 + pose_in_tilt.position.y ** 2) * -1 - current_pan = robot.get_joint_state(pan_joint) - current_tilt = robot.get_joint_state(tilt_joint) + current_pan = robot.get_joint_position(pan_joint) + current_tilt = robot.get_joint_position(tilt_joint) - robot.set_joint_state(pan_joint, new_pan + current_pan) - robot.set_joint_state(tilt_joint, new_tilt + current_tilt) + robot.set_joint_position(pan_joint, new_pan + current_pan) + robot.set_joint_position(tilt_joint, new_tilt + current_tilt) class DefaultMoveGripper(ProcessModule): @@ -101,8 +56,8 @@ class DefaultMoveGripper(ProcessModule): Furthermore, it can only moved one gripper at a time. """ - def _execute(self, desig: MoveGripperMotion.Motion): - robot = BulletWorld.robot + def _execute(self, desig: MoveGripperMotion): + robot = World.robot gripper = desig.gripper motion = desig.motion for joint, state in robot_description.get_static_gripper_chain(gripper, motion).items(): @@ -115,17 +70,17 @@ class DefaultDetecting(ProcessModule): the field of view of the robot. """ - def _execute(self, desig: DetectingMotion.Motion): - robot = BulletWorld.robot + def _execute(self, desig: DetectingMotion): + robot = World.robot object_type = desig.object_type # Should be "wide_stereo_optical_frame" cam_frame_name = robot_description.get_camera_frame() # should be [0, 0, 1] front_facing_axis = robot_description.front_facing_axis - objects = BulletWorld.current_bullet_world.get_objects_by_type(object_type) + objects = World.current_world.get_object_by_type(object_type) for obj in objects: - if btr.visible(obj, robot.get_link_pose(cam_frame_name), front_facing_axis): + if visible(obj, robot.get_link_pose(cam_frame_name), front_facing_axis): return obj @@ -134,9 +89,9 @@ class DefaultMoveTCP(ProcessModule): This process moves the tool center point of either the right or the left arm. """ - def _execute(self, desig: MoveTCPMotion.Motion): + def _execute(self, desig: MoveTCPMotion): target = desig.target - robot = BulletWorld.robot + robot = World.robot _move_arm_tcp(target, robot, desig.arm) @@ -147,32 +102,32 @@ class DefaultMoveArmJoints(ProcessModule): list that should be applied or a pre-defined position can be used, such as "parking" """ - def _execute(self, desig: MoveArmJointsMotion.Motion): + def _execute(self, desig: MoveArmJointsMotion): - robot = BulletWorld.robot + robot = World.robot if desig.right_arm_poses: for joint, pose in desig.right_arm_poses.items(): - robot.set_joint_state(joint, pose) + robot.set_joint_position(joint, pose) if desig.left_arm_poses: for joint, pose in desig.left_arm_poses.items(): - robot.set_joint_state(joint, pose) + robot.set_joint_position(joint, pose) class DefaultMoveJoints(ProcessModule): - def _execute(self, desig: MoveJointsMotion.Motion): - robot = BulletWorld.robot + def _execute(self, desig: MoveJointsMotion): + robot = World.robot for joint, pose in zip(desig.names, desig.positions): - robot.set_joint_state(joint, pose) + robot.set_joint_position(joint, pose) class DefaultWorldStateDetecting(ProcessModule): """ - This process module detectes an object even if it is not in the field of view of the robot. + This process moduledetectes an object even if it is not in the field of view of the robot. """ - def _execute(self, desig: WorldStateDetectingMotion.Motion): + def _execute(self, desig: WorldStateDetectingMotion): obj_type = desig.object_type - return list(filter(lambda obj: obj.type == obj_type, BulletWorld.current_bullet_world.objects))[0] + return list(filter(lambda obj: obj.type == obj_type, World.current_world.objects))[0] class DefaultOpen(ProcessModule): @@ -180,17 +135,17 @@ class DefaultOpen(ProcessModule): Low-level implementation of opening a container in the simulation. Assumes the handle is already grasped. """ - def _execute(self, desig: OpeningMotion.Motion): - part_of_object = desig.object_part.bullet_world_object + def _execute(self, desig: OpeningMotion): + part_of_object = desig.object_part.world_object - container_joint = part_of_object.find_joint_above(desig.object_part.name, JointType.PRISMATIC) + container_joint = part_of_object.find_joint_above_link(desig.object_part.name, JointType.PRISMATIC) - goal_pose = btr.link_pose_for_joint_config(part_of_object, { + goal_pose = link_pose_for_joint_config(part_of_object, { container_joint: part_of_object.get_joint_limits(container_joint)[1] - 0.05}, desig.object_part.name) - _move_arm_tcp(goal_pose, BulletWorld.robot, desig.arm) + _move_arm_tcp(goal_pose, World.robot, desig.arm) - desig.object_part.bullet_world_object.set_joint_state(container_joint, + desig.object_part.world_object.set_joint_position(container_joint, part_of_object.get_joint_limits( container_joint)[1]) @@ -199,17 +154,17 @@ class DefaultClose(ProcessModule): """ Low-level implementation that lets the robot close a grasped container, in simulation """ - def _execute(self, desig: ClosingMotion.Motion): - part_of_object = desig.object_part.bullet_world_object + def _execute(self, desig: ClosingMotion): + part_of_object = desig.object_part.world_object - container_joint = part_of_object.find_joint_above(desig.object_part.name, JointType.PRISMATIC) + container_joint = part_of_object.find_joint_above_link(desig.object_part.name, JointType.PRISMATIC) - goal_pose = btr.link_pose_for_joint_config(part_of_object, { + goal_pose = link_pose_for_joint_config(part_of_object, { container_joint: part_of_object.get_joint_limits(container_joint)[0]}, desig.object_part.name) - _move_arm_tcp(goal_pose, BulletWorld.robot, desig.arm) + _move_arm_tcp(goal_pose, World.robot, desig.arm) - desig.object_part.bullet_world_object.set_joint_state(container_joint, + desig.object_part.world_object.set_joint_position(container_joint, part_of_object.get_joint_limits( container_joint)[0]) @@ -228,8 +183,6 @@ class DefaultManager(ProcessModuleManager): def __init__(self): super().__init__("default") self._navigate_lock = Lock() - self._pick_up_lock = Lock() - self._place_lock = Lock() self._looking_lock = Lock() self._detecting_lock = Lock() self._move_tcp_lock = Lock() @@ -244,14 +197,6 @@ def navigate(self): if ProcessModuleManager.execution_type == "simulated": return DefaultNavigation(self._navigate_lock) - def pick_up(self): - if ProcessModuleManager.execution_type == "simulated": - return DefaultPickUp(self._pick_up_lock) - - def place(self): - if ProcessModuleManager.execution_type == "simulated": - return DefaultPlace(self._place_lock) - def looking(self): if ProcessModuleManager.execution_type == "simulated": return DefaultMoveHead(self._looking_lock) diff --git a/src/pycram/process_modules/donbot_process_modules.py b/src/pycram/process_modules/donbot_process_modules.py index ed5c8ae80..f612f89d1 100644 --- a/src/pycram/process_modules/donbot_process_modules.py +++ b/src/pycram/process_modules/donbot_process_modules.py @@ -1,32 +1,26 @@ -import time from threading import Lock import numpy as np -import pybullet as p -import pycram.bullet_world_reasoning as btr -import pycram.helper as helper -from ..bullet_world import BulletWorld, Object +from ..worlds.bullet_world import World from ..designators.motion_designator import MoveArmJointsMotion, WorldStateDetectingMotion -from ..external_interfaces.ik import request_ik from ..local_transformer import LocalTransformer -from ..pose import Pose from ..process_module import ProcessModule, ProcessModuleManager from ..robot_descriptions import robot_description -from tf.transformations import euler_from_quaternion, quaternion_from_euler +from ..process_modules.pr2_process_modules import Pr2Detecting as DonbotDetecting, _move_arm_tcp def _park_arms(arm): """ Defines the joint poses for the parking positions of the arm of Donbot and applies them to the - in the BulletWorld defined robot. + in the World defined robot. :return: None """ - robot = BulletWorld.robot + robot = World.robot if arm == "left": for joint, pose in robot_description.get_static_joint_chain("left", "park").items(): - robot.set_joint_state(joint, pose) + robot.set_joint_position(joint, pose) class DonbotNavigation(ProcessModule): @@ -35,29 +29,9 @@ class DonbotNavigation(ProcessModule): """ def _execute(self, desig): - robot = BulletWorld.robot + robot = World.robot robot.set_pose(desig.target) -class DonbotPickUp(ProcessModule): - """ - This process module is for picking up a given object. - The object has to be reachable for this process module to succeed. - """ - - def _execute(self, desig): - object = desig.object_desig.bullet_world_object - robot = BulletWorld.robot - grasp = robot_description.grasps.get_orientation_for_grasp(desig.grasp) - target = object.get_pose() - target.orientation.x = grasp[0] - target.orientation.y = grasp[1] - target.orientation.z = grasp[2] - target.orientation.w = grasp[3] - - _move_arm_tcp(target, robot, "left") - tool_frame = robot_description.get_tool_frame("left") - robot.attach(object, tool_frame) - class DonbotPlace(ProcessModule): """ @@ -65,19 +39,18 @@ class DonbotPlace(ProcessModule): """ def _execute(self, desig): - object = desig.object.bullet_world_object - robot = BulletWorld.robot + obj = desig.object.world_object + robot = World.robot # Transformations such that the target position is the position of the object and not the tcp - object_pose = object.get_pose() + object_pose = obj.get_pose() local_tf = LocalTransformer() tcp_to_object = local_tf.transform_pose(object_pose, robot.get_link_tf_frame(robot_description.get_tool_frame("left"))) target_diff = desig.target.to_transform("target").inverse_times(tcp_to_object.to_transform("object")).to_pose() _move_arm_tcp(target_diff, robot, "left") - robot.detach(object) - + robot.detach(obj) class DonbotMoveHead(ProcessModule): @@ -88,26 +61,26 @@ class DonbotMoveHead(ProcessModule): def _execute(self, desig): target = desig.target - robot = BulletWorld.robot + robot = World.robot local_transformer = LocalTransformer() pose_in_shoulder = local_transformer.transform_pose(target, robot.get_link_tf_frame("ur5_shoulder_link")) if pose_in_shoulder.position.x >= 0 and pose_in_shoulder.position.x >= abs(pose_in_shoulder.position.y): - robot.set_joint_states(robot_description.get_static_joint_chain("left", "front")) + robot.set_joint_positions(robot_description.get_static_joint_chain("left", "front")) if pose_in_shoulder.position.y >= 0 and pose_in_shoulder.position.y >= abs(pose_in_shoulder.position.x): - robot.set_joint_states(robot_description.get_static_joint_chain("left", "arm_right")) + robot.set_joint_positions(robot_description.get_static_joint_chain("left", "arm_right")) if pose_in_shoulder.position.x <= 0 and abs(pose_in_shoulder.position.x) > abs(pose_in_shoulder.position.y): - robot.set_joint_states(robot_description.get_static_joint_chain("left", "back")) + robot.set_joint_positions(robot_description.get_static_joint_chain("left", "back")) if pose_in_shoulder.position.y <= 0 and abs(pose_in_shoulder.position.y) > abs(pose_in_shoulder.position.x): - robot.set_joint_states(robot_description.get_static_joint_chain("left", "arm_left")) + robot.set_joint_positions(robot_description.get_static_joint_chain("left", "arm_left")) pose_in_shoulder = local_transformer.transform_pose(target, robot.get_link_tf_frame("ur5_shoulder_link")) new_pan = np.arctan2(pose_in_shoulder.position.y, pose_in_shoulder.position.x) - robot.set_joint_state("ur5_shoulder_pan_joint", new_pan + robot.get_joint_state("ur5_shoulder_pan_joint")) + robot.set_joint_position("ur5_shoulder_pan_joint", new_pan + robot.get_joint_position("ur5_shoulder_pan_joint")) class DonbotMoveGripper(ProcessModule): @@ -117,30 +90,10 @@ class DonbotMoveGripper(ProcessModule): """ def _execute(self, desig): - robot = BulletWorld.robot + robot = World.robot gripper = desig.gripper motion = desig.motion - robot.set_joint_states(robot_description.get_static_gripper_chain(gripper, motion)) - - -class DonbotDetecting(ProcessModule): - """ - This process module tries to detect an object with the given type. To be detected the object has to be in - the field of view of the robot. - """ - - def _execute(self, desig): - robot = BulletWorld.robot - object_type = desig.object_type - # Should be "wide_stereo_optical_frame" - cam_frame_name = robot_description.get_camera_frame() - # should be [0, 0, 1] - front_facing_axis = robot_description.front_facing_axis - - objects = BulletWorld.current_bullet_world.get_objects_by_type(object_type) - for obj in objects: - if btr.visible(obj, robot.get_link_pose(cam_frame_name), front_facing_axis): - return obj + robot.set_joint_positions(robot_description.get_static_gripper_chain(gripper, motion)) class DonbotMoveTCP(ProcessModule): @@ -150,7 +103,7 @@ class DonbotMoveTCP(ProcessModule): def _execute(self, desig): target = desig.target - robot = BulletWorld.robot + robot = World.robot _move_arm_tcp(target, robot, desig.arm) @@ -161,10 +114,10 @@ class DonbotMoveJoints(ProcessModule): list that should be applied or a pre-defined position can be used, such as "parking" """ - def _execute(self, desig: MoveArmJointsMotion.Motion): - robot = BulletWorld.robot + def _execute(self, desig: MoveArmJointsMotion): + robot = World.robot if desig.left_arm_poses: - robot.set_joint_states(desig.left_arm_poses) + robot.set_joint_positions(desig.left_arm_poses) class DonbotWorldStateDetecting(ProcessModule): @@ -172,17 +125,9 @@ class DonbotWorldStateDetecting(ProcessModule): This process module detectes an object even if it is not in the field of view of the robot. """ - def _execute(self, desig: WorldStateDetectingMotion.Motion): + def _execute(self, desig: WorldStateDetectingMotion): obj_type = desig.object_type - return list(filter(lambda obj: obj.type == obj_type, BulletWorld.current_bullet_world.objects))[0] - -def _move_arm_tcp(target: Pose, robot: Object, arm: str) -> None: - gripper = robot_description.get_tool_frame(arm) - - joints = robot_description.chains[arm].joints - - inv = request_ik(target, robot, joints, gripper) - helper._apply_ik(robot, inv, joints) + return list(filter(lambda obj: obj.type == obj_type, World.current_world.objects))[0] class DonbotManager(ProcessModuleManager): @@ -206,10 +151,6 @@ def navigate(self): if ProcessModuleManager.execution_type == "simulated": return DonbotNavigation(self._navigate_lock) - def pick_up(self): - if ProcessModuleManager.execution_type == "simulated": - return DonbotPickUp(self._pick_up_lock) - def place(self): if ProcessModuleManager.execution_type == "simulated": return DonbotPlace(self._place_lock) diff --git a/src/pycram/process_modules/hsr_process_modules.py b/src/pycram/process_modules/hsr_process_modules.py deleted file mode 100644 index e3df9dba1..000000000 --- a/src/pycram/process_modules/hsr_process_modules.py +++ /dev/null @@ -1,270 +0,0 @@ -from threading import Lock - -from ..robot_descriptions import robot_description -from ..process_module import ProcessModule, ProcessModuleManager -from ..bullet_world import BulletWorld -from ..helper import _apply_ik -import pycram.bullet_world_reasoning as btr -import pybullet as p -import logging -import time - - -def _park_arms(arm): - """ - Defines the joint poses for the parking positions of the arm of HSR and applies them to the - in the BulletWorld defined robot. - :return: None - """ - - robot = BulletWorld.robot - if arm == "left": - for joint, pose in robot_description.get_static_joint_chain("left", "park").items(): - robot.set_joint_state(joint, pose) - - -class HSRNavigation(ProcessModule): - """ - The process module to move the robot from one position to another. - """ - - def _execute(self, desig): - solution = desig.reference() - if solution['cmd'] == 'navigate': - robot = BulletWorld.robot - robot.set_position_and_orientation(solution['target'], solution['orientation']) - - -class HSRPickUp(ProcessModule): - """ - This process module is for picking up a given object. - The object has to be reachable for this process module to succeed. - """ - - def _execute(self, desig): - solution = desig.reference() - if solution['cmd'] == 'pick': - object = solution['object'] - robot = BulletWorld.robot - target = object.get_position() - inv = p.calculateInverseKinematics(robot.id, robot.get_link_id(solution['gripper']), target, - maxNumIterations=100) - _apply_ik(robot, inv) - robot.attach(object, solution['gripper']) - time.sleep(0.5) - - -class HSRPlace(ProcessModule): - """ - This process module places an object at the given position in world coordinate frame. - """ - - def _execute(self, desig): - solution = desig.reference() - if solution['cmd'] == 'place': - object = solution['object'] - robot = BulletWorld.robot - inv = p.calculateInverseKinematics(robot.id, robot.get_link_id(solution['gripper']), solution['target'], - maxNumIterations=100) - _apply_ik(robot, inv) - robot.detach(object) - time.sleep(0.5) - - -class HSRAccessing(ProcessModule): - """ - This process module responsible for opening drawers to access the objects inside. This works by firstly moving - the end effector to the handle of the drawer. Next, the end effector is moved the respective distance to the back. - This provides the illusion the robot would open the drawer by himself. - Then the drawer will be opened by setting the joint pose of the drawer joint. - """ - - def _execute(self, desig): - solution = desig.reference() - if solution['cmd'] == 'access': - kitchen = solution['part_of'] - robot = BulletWorld.robot - gripper = solution['gripper'] - drawer_handle = solution['drawer_handle'] - drawer_joint = solution['drawer_joint'] - dis = solution['distance'] - inv = p.calculateInverseKinematics(robot.id, robot.get_link_id(gripper), - kitchen.get_link_position(drawer_handle)) - _apply_ik(robot, inv) - time.sleep(0.2) - han_pose = kitchen.get_link_position(drawer_handle) - new_p = [han_pose[0] - dis, han_pose[1], han_pose[2]] - inv = p.calculateInverseKinematics(robot.id, robot.get_link_id(gripper), new_p) - _apply_ik(robot, inv) - kitchen.set_joint_state(drawer_joint, 0.3) - time.sleep(0.5) - - -class HSRParkArms(ProcessModule): - """ - This process module is for moving the arms in a parking position. - It is currently not used. - """ - - def _execute(self, desig): - solutions = desig.reference() - if solutions['cmd'] == 'park': - _park_arms() - - -class HSRMoveHead(ProcessModule): - """ - This process module moves the head to look at a specific point in the world coordinate frame. - This point can either be a position or an object. - """ - - def _execute(self, desig): - solutions = desig.reference() - if solutions['cmd'] == 'looking': - target = solutions['target'] - if target == 'forward' or target == 'down': - robot = BulletWorld.robot - for joint, state in robot_description.get_static_joint_chain("neck", target).items(): - robot.set_joint_state(joint, state) - else: - logging.error("There is no target position defined with the target %s.", target) - - -class HSRMoveGripper(ProcessModule): - """ - This process module controls the gripper of the robot. They can either be opened or closed. - Furthermore, it can only moved one gripper at a time. - """ - - def _execute(self, desig): - solution = desig.reference() - if solution['cmd'] == "move-gripper": - robot = BulletWorld.robot - gripper = solution['gripper'] - motion = solution['motion'] - for joint, state in robot_description.get_static_gripper_chain(gripper, motion).items(): - robot.set_joint_state(joint, state) - time.sleep(0.5) - - -class HSRDetecting(ProcessModule): - """ - This process module tries to detect an object with the given type. To be detected the object has to be in - the field of view of the robot. - """ - - def _execute(self, desig): - solution = desig.reference() - if solution['cmd'] == "detecting": - robot = BulletWorld.robot - object_type = solution['object_type'] - cam_frame_name = solution['cam_frame'] - front_facing_axis = solution['front_facing_axis'] - - objects = BulletWorld.current_bullet_world.get_objects_by_type(object_type) - for obj in objects: - if btr.visible(obj, robot.get_link_position_and_orientation(cam_frame_name), front_facing_axis, 0.5): - return obj - - -class HSRMoveTCP(ProcessModule): - """ - This process moves the tool center point of either the right or the left arm. - """ - - def _execute(self, desig): - solution = desig.reference() - if solution['cmd'] == "move-tcp": - target = solution['target'] - gripper = solution['gripper'] - robot = BulletWorld.robot - inv = p.calculateInverseKinematics(robot.id, robot.get_link_id(gripper), target) - _apply_ik(robot, inv) - time.sleep(0.5) - - -class HSRMoveJoints(ProcessModule): - """ - This process modules moves the joints of either the right or the left arm. The joint states can be given as - list that should be applied or a pre-defined position can be used, such as "parking" - """ - - def _execute(self, desig): - solution = desig.reference() - if solution['cmd'] == "move-arm-joints": - robot = BulletWorld.robot - left_arm_poses = solution['left_arm_poses'] - - if type(left_arm_poses) == dict: - for joint, pose in left_arm_poses.items(): - robot.set_joint_state(joint, pose) - elif type(left_arm_poses) == str and left_arm_poses == "park": - _park_arms("left") - - time.sleep(0.5) - - -class HSRWorldStateDetecting(ProcessModule): - """ - This process module detectes an object even if it is not in the field of view of the robot. - """ - - def _execute(self, desig): - solution = desig.reference() - if solution['cmd'] == "world-state-detecting": - obj_type = solution['object_type'] - return list(filter(lambda obj: obj.type == obj_type, BulletWorld.current_bullet_world.objects))[0] - - -class HSRManager(ProcessModuleManager): - - def __init__(self): - super().__init__("hsrb") - self._navigate_lock = Lock() - self._pick_up_lock = Lock() - self._place_lock = Lock() - self._looking_lock = Lock() - self._detecting_lock = Lock() - self._move_tcp_lock = Lock() - self._move_arm_joints_lock = Lock() - self._world_state_detecting_lock = Lock() - self._move_joints_lock = Lock() - self._move_gripper_lock = Lock() - self._open_lock = Lock() - self._close_lock = Lock() - - def navigate(self): - if ProcessModuleManager.execution_type == "simulated": - return HSRNavigation(self._navigate_lock) - - def pick_up(self): - if ProcessModuleManager.execution_type == "simulated": - return HSRPickUp(self._pick_up_lock) - - def place(self): - if ProcessModuleManager.execution_type == "simulated": - return HSRPlace(self._place_lock) - - def looking(self): - if ProcessModuleManager.execution_type == "simulated": - return HSRMoveHead(self._looking_lock) - - def detecting(self): - if ProcessModuleManager.execution_type == "simulated": - return HSRDetecting(self._detecting_lock) - - def move_tcp(self): - if ProcessModuleManager.execution_type == "simulated": - return HSRMoveTCP(self._move_tcp_lock) - - def move_arm_joints(self): - if ProcessModuleManager.execution_type == "simulated": - return HSRMoveJoints(self._move_arm_joints_lock) - - def world_state_detecting(self): - if ProcessModuleManager.execution_type == "simulated": - return HSRWorldStateDetecting(self._world_state_detecting_lock) - - def move_gripper(self): - if ProcessModuleManager.execution_type == "simulated": - return HSRMoveGripper(self._move_gripper_lock) diff --git a/src/pycram/process_modules/hsrb_process_modules.py b/src/pycram/process_modules/hsrb_process_modules.py new file mode 100644 index 000000000..3f02d466c --- /dev/null +++ b/src/pycram/process_modules/hsrb_process_modules.py @@ -0,0 +1,583 @@ +import numpy as np +import rospy +from threading import Lock +from typing import Any + +from ..datastructures.enums import JointType +from ..robot_descriptions import robot_description +from ..process_module import ProcessModule +from ..datastructures.pose import Point +from ..helper import _apply_ik +from ..external_interfaces.ik import request_ik +from .. import world_reasoning as btr +from ..local_transformer import LocalTransformer +from ..designators.motion_designator import * +from ..external_interfaces import giskard + + + +def calculate_and_apply_ik(robot, gripper: str, target_position: Point, max_iterations: Optional[int] = None): + """ + Calculates the inverse kinematics for the given target pose and applies it to the robot. + """ + target_position_l = [target_position.x, target_position.y, target_position.z] + # TODO: Check if this is correct (getting the arm and using its joints), previously joints was not provided. + arm = "right" if gripper == robot_description.get_tool_frame("right") else "left" + inv = request_ik(Pose(target_position_l, [0, 0, 0, 1]), + robot, robot_description.chains[arm].joints, gripper) + joints = robot_description.chains[arm].joints + _apply_ik(robot, inv, joints) + + +def _park_arms(arm): + """ + Defines the joint poses for the parking positions of the arms of HSRB and applies them to the + in the World defined robot. + :return: None + """ + + robot = World.robot + if arm == "left": + for joint, pose in robot_description.get_static_joint_chain("left", "park").items(): + robot.set_joint_position(joint, pose) + + +class HSRBNavigation(ProcessModule): + """ + The process module to move the robot from one position to another. + """ + + def _execute(self, desig: MoveMotion): + robot = World.robot + robot.set_pose(desig.target) + + +class HSRBMoveHead(ProcessModule): + """ + This process module moves the head to look at a specific point in the world coordinate frame. + This point can either be a position or an object. + """ + + def _execute(self, desig: LookingMotion): + target = desig.target + robot = World.robot + + local_transformer = LocalTransformer() + pose_in_pan = local_transformer.transform_pose(target, robot.get_link_tf_frame("head_pan_link")) + pose_in_tilt = local_transformer.transform_pose(target, robot.get_link_tf_frame("head_tilt_link")) + + new_pan = np.arctan2(pose_in_pan.position.y, pose_in_pan.position.x) + new_tilt = np.arctan2(pose_in_tilt.position.z, pose_in_tilt.position.x ** 2 + pose_in_tilt.position.y ** 2) * -1 + + current_pan = robot.get_joint_position("head_pan_joint") + current_tilt = robot.get_joint_position("head_tilt_joint") + + robot.set_joint_position("head_pan_joint", new_pan + current_pan) + robot.set_joint_position("head_tilt_joint", new_tilt + current_tilt) + + +class HSRBMoveGripper(ProcessModule): + """ + This process module controls the gripper of the robot. They can either be opened or closed. + Furthermore, it can only moved one gripper at a time. + """ + + def _execute(self, desig: MoveGripperMotion): + robot = World.robot + gripper = desig.gripper + motion = desig.motion + for joint, state in robot_description.get_static_gripper_chain(gripper, motion).items(): + robot.set_joint_position(joint, state) + + +class HSRBDetecting(ProcessModule): + """ + This process module tries to detect an object with the given type. To be detected the object has to be in + the field of view of the robot. + """ + + def _execute(self, desig: DetectingMotion): + rospy.loginfo("Detecting technique: {}".format(desig.technique)) + robot = World.robot + object_type = desig.object_type + # Should be "wide_stereo_optical_frame" + cam_frame_name = robot_description.get_camera_frame() + # should be [0, 0, 1] + front_facing_axis = robot_description.front_facing_axis + # if desig.technique == 'all': + # rospy.loginfo("Fake detecting all generic objects") + # objects = BulletWorld.current_bullet_world.get_all_objets_not_robot() + # elif desig.technique == 'human': + # rospy.loginfo("Fake detecting human -> spawn 0,0,0") + # human = [] + # human.append(Object("human", ObjectType.HUMAN, "human_male.stl", pose=Pose([0, 0, 0]))) + # object_dict = {} + # + # # Iterate over the list of objects and store each one in the dictionary + # for i, obj in enumerate(human): + # object_dict[obj.name] = obj + # return object_dict + # + # else: + # rospy.loginfo("Fake -> Detecting specific object type") + objects = World.current_world.get_object_by_type(object_type) + + object_dict = {} + + perceived_objects = [] + for obj in objects: + if btr.visible(obj, robot.get_link_pose(cam_frame_name), front_facing_axis): + return obj + + +class HSRBMoveTCP(ProcessModule): + """ + This process moves the tool center point of either the right or the left arm. + """ + + def _execute(self, desig: MoveTCPMotion): + target = desig.target + robot = World.robot + + _move_arm_tcp(target, robot, desig.arm) + + +class HSRBMoveArmJoints(ProcessModule): + """ + This process modules moves the joints of either the right or the left arm. The joint states can be given as + list that should be applied or a pre-defined position can be used, such as "parking" + """ + + def _execute(self, desig: MoveArmJointsMotion): + + robot = World.robot + if desig.right_arm_poses: + robot.set_joint_positions(desig.right_arm_poses) + if desig.left_arm_poses: + robot.set_joint_positions(desig.left_arm_poses) + + +class HSRBMoveJoints(ProcessModule): + """ + Process Module for generic joint movements, is not confined to the arms but can move any joint of the robot + """ + + def _execute(self, desig: MoveJointsMotion): + robot = World.robot + robot.set_joint_positions(dict(zip(desig.names, desig.positions))) + + +class HSRBWorldStateDetecting(ProcessModule): + """ + This process module detectes an object even if it is not in the field of view of the robot. + """ + + def _execute(self, desig: WorldStateDetectingMotion): + obj_type = desig.object_type + return list(filter(lambda obj: obj.obj_type == obj_type, World.current_world.objects))[0] + + +class HSRBOpen(ProcessModule): + """ + Low-level implementation of opening a container in the simulation. Assumes the handle is already grasped. + """ + + def _execute(self, desig: OpeningMotion): + part_of_object = desig.object_part.world_object + + container_joint = part_of_object.find_joint_above_link(desig.object_part.name, JointType.PRISMATIC) + + goal_pose = btr.link_pose_for_joint_config(part_of_object, { + container_joint: part_of_object.get_joint_limits(container_joint)[1] - 0.05}, desig.object_part.name) + + _move_arm_tcp(goal_pose, World.robot, desig.arm) + + desig.object_part.world_object.set_joint_position(container_joint, + part_of_object.get_joint_limits(container_joint)[1]) + + +class HSRBClose(ProcessModule): + """ + Low-level implementation that lets the robot close a grasped container, in simulation + """ + + def _execute(self, desig: ClosingMotion): + part_of_object = desig.object_part.world_object + + container_joint = part_of_object.find_joint_above_link(desig.object_part.name, JointType.PRISMATIC) + + goal_pose = btr.link_pose_for_joint_config(part_of_object, { + container_joint: part_of_object.get_joint_limits(container_joint)[0]}, desig.object_part.name) + + _move_arm_tcp(goal_pose, World.robot, desig.arm) + + desig.object_part.world_object.set_joint_position(container_joint, + part_of_object.get_joint_limits(container_joint)[0]) + + +def _move_arm_tcp(target: Pose, robot: Object, arm: str) -> None: + gripper = robot_description.get_tool_frame(arm) + + joints = robot_description.chains[arm].joints + + inv = request_ik(target, robot, joints, gripper) + _apply_ik(robot, inv, joints) + + +########################################################### +########## Process Modules for the Real HSRB ############### +########################################################### + + +class HSRBNavigationReal(ProcessModule): + """ + Process module for the real HSRB that sends a cartesian goal to giskard to move the robot base + """ + + def _execute(self, designator: MoveMotion) -> Any: + rospy.logdebug(f"Sending goal to giskard to Move the robot") + # giskard.achieve_cartesian_goal(designator.target, robot_description.base_link, "map") + queryPoseNav(designator.target) + + +class HSRBNavigationSemiReal(ProcessModule): + """ + Process module for the real HSRB that sends a cartesian goal to giskard to move the robot base + """ + + def _execute(self, designator: MoveMotion) -> Any: + rospy.logdebug(f"Sending goal to giskard to Move the robot") + giskard.achieve_cartesian_goal(designator.target, robot_description.base_link, "map") + # queryPoseNav(designator.target) + + +class HSRBMoveHeadReal(ProcessModule): + """ + Process module for the real robot to move that such that it looks at the given position. Uses the same calculation + as the simulated one + """ + + def _execute(self, desig: LookingMotion): + target = desig.target + robot = World.robot + + local_transformer = LocalTransformer() + pose_in_pan = local_transformer.transform_pose(target, robot.get_link_tf_frame("head_pan_link")) + pose_in_tilt = local_transformer.transform_pose(target, robot.get_link_tf_frame("head_tilt_link")) + + new_pan = np.arctan2(pose_in_pan.position.y, pose_in_pan.position.x) + new_tilt = np.arctan2(pose_in_tilt.position.z, pose_in_tilt.position.x + pose_in_tilt.position.y) + + current_pan = robot.get_joint_state("head_pan_joint") + current_tilt = robot.get_joint_state("head_tilt_joint") + + giskard.avoid_all_collisions() + giskard.achieve_joint_goal( + {"head_pan_joint": new_pan + current_pan, "head_tilt_joint": new_tilt + current_tilt}) + giskard.achieve_joint_goal( + {"head_pan_joint": new_pan + current_pan, "head_tilt_joint": new_tilt + current_tilt}) + + +class HSRBDetectingReal(ProcessModule): + """ + Process Module for the real HSRB that tries to detect an object fitting the given object description. Uses Robokudo + for perception of the environment. + """ + + def _execute(self, desig: DetectingMotion) -> Any: + # todo at the moment perception ignores searching for a specific object type so we do as well on real + if desig.technique == 'human' and (desig.state == "start" or desig.state == None): + human_pose = queryHuman() + pose = Pose.from_pose_stamped(human_pose) + pose.position.z = 0 + human = [] + human.append(Object("human", ObjectType.HUMAN, "human_male.stl", pose=pose)) + object_dict = {} + + # Iterate over the list of objects and store each one in the dictionary + for i, obj in enumerate(human): + object_dict[obj.name] = obj + return object_dict + + return human_pose + elif desig.technique == 'human' and desig.state == "stop": + stop_queryHuman() + return "stopped" + + query_result = queryEmpty(ObjectDesignatorDescription(types=[desig.object_type])) + perceived_objects = [] + for i in range(0, len(query_result.res)): + # this has to be pose from pose stamped since we spawn the object with given header + obj_pose = Pose.from_pose_stamped(query_result.res[i].pose[0]) + # obj_pose.orientation = [0, 0, 0, 1] + # obj_pose_tmp = query_result.res[i].pose[0] + obj_type = query_result.res[i].type + obj_size = query_result.res[i].shape_size + obj_color = query_result.res[i].color[0] + color_switch = { + "red": [1, 0, 0, 1], + "green": [0, 1, 0, 1], + "blue": [0, 0, 1, 1], + "black": [0, 0, 0, 1], + "white": [1, 1, 1, 1], + # add more colors if needed + } + color = color_switch.get(obj_color) + if color is None: + color = [0, 0, 0, 1] + + # atm this is the string size that describes the object but it is not the shape size thats why string + def extract_xyz_values(input_string): + # Split the input string by commas and colon to separate key-value pairs + # key_value_pairs = input_string.split(', ') + + # Initialize variables to store the X, Y, and Z values + x_value = None + y_value = None + z_value = None + + for key in input_string: + x_value = key.dimensions.x + y_value = key.dimensions.y + z_value = key.dimensions.z + + # + # # Iterate through the key-value pairs to extract the values + # for pair in key_value_pairs: + # key, value = pair.split(': ') + # if key == 'x': + # x_value = float(value) + # elif key == 'y': + # y_value = float(value) + # elif key == 'z': + # z_value = float(value) + + return x_value, y_value, z_value + + x, y, z = extract_xyz_values(obj_size) + size = (x, z / 2, y) + size_box = (x / 2, z / 2, y / 2) + hard_size = (0.02, 0.02, 0.03) + id = World.current_world.add_rigid_box(obj_pose, hard_size, color) + box_object = Object(obj_type + "_" + str(rospy.get_time()), obj_type, pose=obj_pose, color=color, id=id, + customGeom={"size": [hard_size[0], hard_size[1], hard_size[2]]}) + box_object.set_pose(obj_pose) + box_desig = ObjectDesignatorDescription.Object(box_object.name, box_object.type, box_object) + + perceived_objects.append(box_desig) + + object_dict = {} + + # Iterate over the list of objects and store each one in the dictionary + for i, obj in enumerate(perceived_objects): + object_dict[obj.name] = obj + return object_dict + + +class HSRBMoveTCPReal(ProcessModule): + """ + Moves the tool center point of the real HSRB while avoiding all collisions + """ + + def _execute(self, designator: MoveTCPMotion) -> Any: + lt = LocalTransformer() + pose_in_map = lt.transform_pose(designator.target, "map") + giskard.avoid_all_collisions() + if designator.allow_gripper_collision: + giskard.allow_gripper_collision(designator.arm) + giskard.achieve_cartesian_goal(pose_in_map, robot_description.get_tool_frame(designator.arm), + "map") + + +class HSRBMoveArmJointsReal(ProcessModule): + """ + Moves the arm joints of the real HSRB to the given configuration while avoiding all collisions + """ + + def _execute(self, designator: MoveArmJointsMotion) -> Any: + joint_goals = {} + if designator.left_arm_poses: + joint_goals.update(designator.left_arm_poses) + giskard.avoid_all_collisions() + giskard.achieve_joint_goal(joint_goals) + + +class HSRBMoveJointsReal(ProcessModule): + """ + Moves any joint using giskard, avoids all collisions while doint this. + """ + + def _execute(self, designator: MoveJointsMotion) -> Any: + name_to_position = dict(zip(designator.names, designator.positions)) + giskard.avoid_all_collisions() + giskard.achieve_joint_goal(name_to_position) + + +class HSRBMoveGripperReal(ProcessModule): + """ + Opens or closes the gripper of the real HSRB with the help of giskard. + """ + + def _execute(self, designator: MoveGripperMotion) -> Any: + if (designator.motion == "open"): + pub_gripper = rospy.Publisher('/hsrb/gripper_controller/grasp/goal', GripperApplyEffortActionGoal, + queue_size=10) + rate = rospy.Rate(10) + rospy.sleep(2) + msg = GripperApplyEffortActionGoal() # sprechen joint gripper_controll_manager an, indem wir goal publishen type den giskard fürs greifen erwartet + msg.goal.effort = 0.8 + pub_gripper.publish(msg) + + elif (designator.motion == "close"): + pub_gripper = rospy.Publisher('/hsrb/gripper_controller/grasp/goal', GripperApplyEffortActionGoal, + queue_size=10) + rate = rospy.Rate(10) + rospy.sleep(2) + msg = GripperApplyEffortActionGoal() + msg.goal.effort = -0.8 + pub_gripper.publish(msg) + + # if designator.allow_gripper_collision: + # giskard.allow_gripper_collision("left") + # giskard.achieve_gripper_motion_goal(designator.motion) + + +class HSRBOpenReal(ProcessModule): + """ + Tries to open an already grasped container + """ + + def _execute(self, designator: OpeningMotion) -> Any: + giskard.achieve_open_container_goal(robot_description.get_tool_frame(designator.arm), + designator.object_part.name) + + +class HSRBCloseReal(ProcessModule): + """ + Tries to close an already grasped container + """ + + def _execute(self, designator: ClosingMotion) -> Any: + giskard.achieve_close_container_goal(robot_description.get_tool_frame(designator.arm), + designator.object_part.name) + + +# class HSRBTalkReal(ProcessModule): +# """ +# Tries to close an already grasped container +# """ +# +# def _execute(self, designator: TalkingMotion.Motion) -> Any: +# pub = rospy.Publisher('/talk_request', Voice, queue_size=10) +# +# # fill message of type Voice with required data: +# texttospeech = Voice() +# # language 1 = english (0 = japanese) +# texttospeech.language = 1 +# texttospeech.sentence = designator.cmd +# +# rospy.sleep(1) +# pub.publish(texttospeech) + + +class HSRBManager(ProcessModuleManager): + + def __init__(self): + super().__init__("hsrb") + self._navigate_lock = Lock() + self._pick_up_lock = Lock() + self._place_lock = Lock() + self._looking_lock = Lock() + self._detecting_lock = Lock() + self._move_tcp_lock = Lock() + self._move_arm_joints_lock = Lock() + self._world_state_detecting_lock = Lock() + self._move_joints_lock = Lock() + self._move_gripper_lock = Lock() + self._open_lock = Lock() + self._close_lock = Lock() + self._talk_lock = Lock() + + def navigate(self): + if ProcessModuleManager.execution_type == "simulated": + return HSRBNavigation(self._navigate_lock) + elif ProcessModuleManager.execution_type == "real": + return HSRBNavigationReal(self._navigate_lock) + elif ProcessModuleManager.execution_type == "semi_real": + return HSRBNavigationSemiReal(self._navigate_lock) + + def looking(self): + if ProcessModuleManager.execution_type == "simulated": + return HSRBMoveHead(self._looking_lock) + elif ProcessModuleManager.execution_type == "real": + return HSRBMoveHeadReal(self._looking_lock) + elif ProcessModuleManager.execution_type == "semi_real": + return HSRBMoveHeadReal(self._looking_lock) + + def detecting(self): + if ProcessModuleManager.execution_type == "simulated": + return HSRBDetecting(self._detecting_lock) + elif ProcessModuleManager.execution_type == "real": + return HSRBDetectingReal(self._detecting_lock) + elif ProcessModuleManager.execution_type == "semi_real": + return HSRBDetecting(self._detecting_lock) + + def move_tcp(self): + if ProcessModuleManager.execution_type == "simulated": + return HSRBMoveTCP(self._move_tcp_lock) + elif ProcessModuleManager.execution_type == "real": + return HSRBMoveTCPReal(self._move_tcp_lock) + elif ProcessModuleManager.execution_type == "semi_real": + return HSRBMoveTCPReal(self._move_tcp_lock) + + def move_arm_joints(self): + if ProcessModuleManager.execution_type == "simulated": + return HSRBMoveArmJoints(self._move_arm_joints_lock) + elif ProcessModuleManager.execution_type == "real": + return HSRBMoveArmJointsReal(self._move_arm_joints_lock) + elif ProcessModuleManager.execution_type == "semi_real": + return HSRBMoveArmJointsReal(self._move_arm_joints_lock) + + def world_state_detecting(self): + if ProcessModuleManager.execution_type == "simulated" or ProcessModuleManager.execution_type == "real": + return HSRBWorldStateDetecting(self._world_state_detecting_lock) + elif ProcessModuleManager.execution_type == "semi_real": + return HSRBWorldStateDetecting(self._world_state_detecting_lock) + + def move_joints(self): + if ProcessModuleManager.execution_type == "simulated": + return HSRBMoveJoints(self._move_joints_lock) + elif ProcessModuleManager.execution_type == "real": + return HSRBMoveJointsReal(self._move_joints_lock) + elif ProcessModuleManager.execution_type == "semi_real": + return HSRBMoveJointsReal(self._move_joints_lock) + + def move_gripper(self): + if ProcessModuleManager.execution_type == "simulated": + return HSRBMoveGripper(self._move_gripper_lock) + elif ProcessModuleManager.execution_type == "real": + return HSRBMoveGripperReal(self._move_gripper_lock) + elif ProcessModuleManager.execution_type == "semi_real": + return HSRBMoveGripperReal(self._move_gripper_lock) + + def open(self): + if ProcessModuleManager.execution_type == "simulated": + return HSRBOpen(self._open_lock) + elif ProcessModuleManager.execution_type == "real": + return HSRBOpenReal(self._open_lock) + elif ProcessModuleManager.execution_type == "semi_real": + return HSRBOpenReal(self._open_lock) + + def close(self): + if ProcessModuleManager.execution_type == "simulated": + return HSRBClose(self._close_lock) + elif ProcessModuleManager.execution_type == "real": + return HSRBCloseReal(self._close_lock) + elif ProcessModuleManager.execution_type == "semi_real": + return HSRBCloseReal(self._close_lock) + + # def talk(self): + # if ProcessModuleManager.execution_type == "real": + # return HSRBTalkReal(self._talk_lock) + # elif ProcessModuleManager.execution_type == "semi_real": + # return HSRBTalkReal(self._talk_lock) diff --git a/src/pycram/process_modules/pr2_process_modules.py b/src/pycram/process_modules/pr2_process_modules.py index 3930a8a9b..0b0d0bede 100644 --- a/src/pycram/process_modules/pr2_process_modules.py +++ b/src/pycram/process_modules/pr2_process_modules.py @@ -1,25 +1,26 @@ -from abc import ABC from threading import Lock -from typing import Any +from typing_extensions import Any import actionlib -import pycram.bullet_world_reasoning as btr +from .. import world_reasoning as btr import numpy as np -import time import rospy -import pybullet as p -from ..plan_failures import EnvironmentManipulationImpossible -from ..robot_descriptions import robot_description + from ..process_module import ProcessModule, ProcessModuleManager -from ..bullet_world import BulletWorld, Object -from ..helper import transform -from ..external_interfaces.ik import request_ik, IKError -from ..helper import _transform_to_torso, _apply_ik, calculate_wrist_tool_offset, inverseTimes +from ..external_interfaces.ik import request_ik +from ..helper import _apply_ik from ..local_transformer import LocalTransformer -from ..designators.motion_designator import * -from ..enums import JointType, ObjectType +from ..designators.object_designator import ObjectDesignatorDescription +from ..designators.motion_designator import MoveMotion, LookingMotion, \ + DetectingMotion, MoveTCPMotion, MoveArmJointsMotion, WorldStateDetectingMotion, MoveJointsMotion, \ + MoveGripperMotion, OpeningMotion, ClosingMotion +from ..robot_descriptions import robot_description +from ..world import World +from ..world_concepts.world_object import Object +from ..datastructures.pose import Pose +from ..datastructures.enums import JointType, ObjectType from ..external_interfaces import giskard from ..external_interfaces.robokudo import query @@ -32,17 +33,17 @@ def _park_arms(arm): """ Defines the joint poses for the parking positions of the arms of PR2 and applies them to the - in the BulletWorld defined robot. + in the World defined robot. :return: None """ - robot = BulletWorld.robot + robot = World.robot if arm == "right": for joint, pose in robot_description.get_static_joint_chain("right", "park").items(): - robot.set_joint_state(joint, pose) + robot.set_joint_position(joint, pose) if arm == "left": for joint, pose in robot_description.get_static_joint_chain("left", "park").items(): - robot.set_joint_state(joint, pose) + robot.set_joint_position(joint, pose) class Pr2Navigation(ProcessModule): @@ -50,68 +51,19 @@ class Pr2Navigation(ProcessModule): The process module to move the robot from one position to another. """ - def _execute(self, desig: MoveMotion.Motion): - robot = BulletWorld.robot + def _execute(self, desig: MoveMotion): + robot = World.robot robot.set_pose(desig.target) -class Pr2PickUp(ProcessModule): - """ - This process module is for picking up a given object. - The object has to be reachable for this process module to succeed. - """ - - def _execute(self, desig: PickUpMotion.Motion): - object = desig.object_desig.bullet_world_object - robot = BulletWorld.robot - grasp = robot_description.grasps.get_orientation_for_grasp(desig.grasp) - target = object.get_pose() - target.orientation.x = grasp[0] - target.orientation.y = grasp[1] - target.orientation.z = grasp[2] - target.orientation.w = grasp[3] - - arm = desig.arm - - _move_arm_tcp(target, robot, arm) - tool_frame = robot_description.get_tool_frame(arm) - robot.attach(object, tool_frame) - - -class Pr2Place(ProcessModule): - """ - This process module places an object at the given position in world coordinate frame. - """ - - def _execute(self, desig: PlaceMotion.Motion): - """ - - :param desig: A PlaceMotion - :return: - """ - object = desig.object.bullet_world_object - robot = BulletWorld.robot - arm = desig.arm - - # Transformations such that the target position is the position of the object and not the tcp - object_pose = object.get_pose() - local_tf = LocalTransformer() - tcp_to_object = local_tf.transform_pose(object_pose, robot.get_link_tf_frame(robot_description.get_tool_frame(arm))) - target_diff = desig.target.to_transform("target").inverse_times(tcp_to_object.to_transform("object")).to_pose() - - _move_arm_tcp(target_diff, robot, arm) - robot.detach(object) - - class Pr2MoveHead(ProcessModule): """ - This process module moves the head to look at a specific point in the world coordinate frame. - This point can either be a position or an object. - """ - - def _execute(self, desig: LookingMotion.Motion): + This process module moves the head to look at a specific point in the world coordinate frame. + This point can either be a position or an object. + """ + def _execute(self, desig: LookingMotion): target = desig.target - robot = BulletWorld.robot + robot = World.robot local_transformer = LocalTransformer() pose_in_pan = local_transformer.transform_pose(target, robot.get_link_tf_frame("head_pan_link")) @@ -120,11 +72,11 @@ def _execute(self, desig: LookingMotion.Motion): new_pan = np.arctan2(pose_in_pan.position.y, pose_in_pan.position.x) new_tilt = np.arctan2(pose_in_tilt.position.z, pose_in_tilt.position.x ** 2 + pose_in_tilt.position.y ** 2) * -1 - current_pan = robot.get_joint_state("head_pan_joint") - current_tilt = robot.get_joint_state("head_tilt_joint") + current_pan = robot.get_joint_position("head_pan_joint") + current_tilt = robot.get_joint_position("head_tilt_joint") - robot.set_joint_state("head_pan_joint", new_pan + current_pan) - robot.set_joint_state("head_tilt_joint", new_tilt + current_tilt) + robot.set_joint_position("head_pan_joint", new_pan + current_pan) + robot.set_joint_position("head_tilt_joint", new_tilt + current_tilt) class Pr2MoveGripper(ProcessModule): @@ -133,12 +85,12 @@ class Pr2MoveGripper(ProcessModule): Furthermore, it can only moved one gripper at a time. """ - def _execute(self, desig: MoveGripperMotion.Motion): - robot = BulletWorld.robot + def _execute(self, desig: MoveGripperMotion): + robot = World.robot gripper = desig.gripper motion = desig.motion for joint, state in robot_description.get_static_gripper_chain(gripper, motion).items(): - robot.set_joint_state(joint, state) + robot.set_joint_position(joint, state) class Pr2Detecting(ProcessModule): @@ -147,15 +99,15 @@ class Pr2Detecting(ProcessModule): the field of view of the robot. """ - def _execute(self, desig: DetectingMotion.Motion): - robot = BulletWorld.robot + def _execute(self, desig: DetectingMotion): + robot = World.robot object_type = desig.object_type # Should be "wide_stereo_optical_frame" cam_frame_name = robot_description.get_camera_frame() # should be [0, 0, 1] front_facing_axis = robot_description.front_facing_axis - objects = BulletWorld.current_bullet_world.get_objects_by_type(object_type) + objects = World.current_world.get_object_by_type(object_type) for obj in objects: if btr.visible(obj, robot.get_link_pose(cam_frame_name), front_facing_axis): return obj @@ -166,9 +118,9 @@ class Pr2MoveTCP(ProcessModule): This process moves the tool center point of either the right or the left arm. """ - def _execute(self, desig: MoveTCPMotion.Motion): + def _execute(self, desig: MoveTCPMotion): target = desig.target - robot = BulletWorld.robot + robot = World.robot _move_arm_tcp(target, robot, desig.arm) @@ -179,22 +131,22 @@ class Pr2MoveArmJoints(ProcessModule): list that should be applied or a pre-defined position can be used, such as "parking" """ - def _execute(self, desig: MoveArmJointsMotion.Motion): + def _execute(self, desig: MoveArmJointsMotion): - robot = BulletWorld.robot + robot = World.robot if desig.right_arm_poses: - robot.set_joint_states(desig.right_arm_poses) + robot.set_joint_positions(desig.right_arm_poses) if desig.left_arm_poses: - robot.set_joint_states(desig.left_arm_poses) + robot.set_joint_positions(desig.left_arm_poses) class PR2MoveJoints(ProcessModule): """ Process Module for generic joint movements, is not confined to the arms but can move any joint of the robot """ - def _execute(self, desig: MoveJointsMotion.Motion): - robot = BulletWorld.robot - robot.set_joint_states(dict(zip(desig.names, desig.positions))) + def _execute(self, desig: MoveJointsMotion): + robot = World.robot + robot.set_joint_positions(dict(zip(desig.names, desig.positions))) class Pr2WorldStateDetecting(ProcessModule): @@ -202,9 +154,9 @@ class Pr2WorldStateDetecting(ProcessModule): This process module detectes an object even if it is not in the field of view of the robot. """ - def _execute(self, desig: WorldStateDetectingMotion.Motion): + def _execute(self, desig: WorldStateDetectingMotion): obj_type = desig.object_type - return list(filter(lambda obj: obj.type == obj_type, BulletWorld.current_bullet_world.objects))[0] + return list(filter(lambda obj: obj.obj_type == obj_type, World.current_world.objects))[0] class Pr2Open(ProcessModule): @@ -212,19 +164,19 @@ class Pr2Open(ProcessModule): Low-level implementation of opening a container in the simulation. Assumes the handle is already grasped. """ - def _execute(self, desig: OpeningMotion.Motion): - part_of_object = desig.object_part.bullet_world_object + def _execute(self, desig: OpeningMotion): + part_of_object = desig.object_part.world_object - container_joint = part_of_object.find_joint_above(desig.object_part.name, JointType.PRISMATIC) + container_joint = part_of_object.find_joint_above_link(desig.object_part.name, JointType.PRISMATIC) goal_pose = btr.link_pose_for_joint_config(part_of_object, { container_joint: part_of_object.get_joint_limits(container_joint)[1] - 0.05}, desig.object_part.name) - _move_arm_tcp(goal_pose, BulletWorld.robot, desig.arm) + _move_arm_tcp(goal_pose, World.robot, desig.arm) - desig.object_part.bullet_world_object.set_joint_state(container_joint, - part_of_object.get_joint_limits( - container_joint)[1]) + desig.object_part.world_object.set_joint_position(container_joint, + part_of_object.get_joint_limits( + container_joint)[1] - 0.05) class Pr2Close(ProcessModule): @@ -232,18 +184,18 @@ class Pr2Close(ProcessModule): Low-level implementation that lets the robot close a grasped container, in simulation """ - def _execute(self, desig: ClosingMotion.Motion): - part_of_object = desig.object_part.bullet_world_object + def _execute(self, desig: ClosingMotion): + part_of_object = desig.object_part.world_object - container_joint = part_of_object.find_joint_above(desig.object_part.name, JointType.PRISMATIC) + container_joint = part_of_object.find_joint_above_link(desig.object_part.name, JointType.PRISMATIC) goal_pose = btr.link_pose_for_joint_config(part_of_object, { container_joint: part_of_object.get_joint_limits(container_joint)[0]}, desig.object_part.name) - _move_arm_tcp(goal_pose, BulletWorld.robot, desig.arm) + _move_arm_tcp(goal_pose, World.robot, desig.arm) - desig.object_part.bullet_world_object.set_joint_state(container_joint, - part_of_object.get_joint_limits( + desig.object_part.world_object.set_joint_position(container_joint, + part_of_object.get_joint_limits( container_joint)[0]) @@ -266,32 +218,20 @@ class Pr2NavigationReal(ProcessModule): Process module for the real PR2 that sends a cartesian goal to giskard to move the robot base """ - def _execute(self, designator: MoveMotion.Motion) -> Any: + def _execute(self, designator: MoveMotion) -> Any: rospy.logdebug(f"Sending goal to giskard to Move the robot") giskard.achieve_cartesian_goal(designator.target, robot_description.base_link, "map") -class Pr2PickUpReal(ProcessModule): - - def _execute(self, designator: PickUpMotion.Motion) -> Any: - pass - - -class Pr2PlaceReal(ProcessModule): - - def _execute(self, designator: MotionDesignatorDescription.Motion) -> Any: - pass - - class Pr2MoveHeadReal(ProcessModule): """ Process module for the real robot to move that such that it looks at the given position. Uses the same calculation as the simulated one """ - def _execute(self, desig: LookingMotion.Motion): + def _execute(self, desig: LookingMotion): target = desig.target - robot = BulletWorld.robot + robot = World.robot local_transformer = LocalTransformer() pose_in_pan = local_transformer.transform_pose(target, robot.get_link_tf_frame("head_pan_link")) @@ -314,20 +254,20 @@ class Pr2DetectingReal(ProcessModule): for perception of the environment. """ - def _execute(self, designator: DetectingMotion.Motion) -> Any: + def _execute(self, designator: DetectingMotion) -> Any: query_result = query(ObjectDesignatorDescription(types=[designator.object_type])) # print(query_result) obj_pose = query_result["ClusterPoseBBAnnotator"] lt = LocalTransformer() - obj_pose = lt.transform_pose(obj_pose, BulletWorld.robot.get_link_tf_frame("torso_lift_link")) + obj_pose = lt.transform_pose(obj_pose, World.robot.get_link_tf_frame("torso_lift_link")) obj_pose.orientation = [0, 0, 0, 1] obj_pose.position.x += 0.05 - bullet_obj = BulletWorld.current_bullet_world.get_objects_by_type(designator.object_type) - if bullet_obj: - bullet_obj[0].set_pose(obj_pose) - return bullet_obj[0] + world_obj = World.current_world.get_object_by_type(designator.object_type) + if world_obj: + world_obj[0].set_pose(obj_pose) + return world_obj[0] elif designator.object_type == ObjectType.JEROEN_CUP: cup = Object("cup", ObjectType.JEROEN_CUP, "jeroen_cup.stl", pose=obj_pose) return cup @@ -335,26 +275,22 @@ def _execute(self, designator: DetectingMotion.Motion) -> Any: bowl = Object("bowl", ObjectType.BOWL, "bowl.stl", pose=obj_pose) return bowl - - return bullet_obj[0] - - - - + return world_obj[0] class Pr2MoveTCPReal(ProcessModule): """ Moves the tool center point of the real PR2 while avoiding all collisions """ - def _execute(self, designator: MoveTCPMotion.Motion) -> Any: + def _execute(self, designator: MoveTCPMotion) -> Any: lt = LocalTransformer() pose_in_map = lt.transform_pose(designator.target, "map") if designator.allow_gripper_collision: giskard.allow_gripper_collision(designator.arm) giskard.achieve_cartesian_goal(pose_in_map, robot_description.get_tool_frame(designator.arm), - robot_description.base_link) + "torso_lift_link") + #robot_description.base_link) class Pr2MoveArmJointsReal(ProcessModule): @@ -362,7 +298,7 @@ class Pr2MoveArmJointsReal(ProcessModule): Moves the arm joints of the real PR2 to the given configuration while avoiding all collisions """ - def _execute(self, designator: MoveArmJointsMotion.Motion) -> Any: + def _execute(self, designator: MoveArmJointsMotion) -> Any: joint_goals = {} if designator.left_arm_poses: joint_goals.update(designator.left_arm_poses) @@ -377,7 +313,7 @@ class Pr2MoveJointsReal(ProcessModule): Moves any joint using giskard, avoids all collisions while doint this. """ - def _execute(self, designator: MoveJointsMotion.Motion) -> Any: + def _execute(self, designator: MoveJointsMotion) -> Any: name_to_position = dict(zip(designator.names, designator.positions)) giskard.avoid_all_collisions() giskard.achieve_joint_goal(name_to_position) @@ -388,7 +324,7 @@ class Pr2MoveGripperReal(ProcessModule): Opens or closes the gripper of the real PR2, gripper uses an action server for this instead of giskard """ - def _execute(self, designator: MoveGripperMotion.Motion) -> Any: + def _execute(self, designator: MoveGripperMotion) -> Any: def activate_callback(): rospy.loginfo("Started gripper Movement") @@ -401,7 +337,10 @@ def feedback_callback(msg): goal = Pr2GripperCommandGoal() goal.command.position = 0.0 if designator.motion == "close" else 0.1 goal.command.max_effort = 50.0 - controller_topic = "r_gripper_controller/gripper_action" if designator.gripper == "right" else "l_gripper_controller/gripper_action" + if designator.gripper == "right": + controller_topic = "r_gripper_controller/gripper_action" + else: + controller_topic = "l_gripper_controller/gripper_action" client = actionlib.SimpleActionClient(controller_topic, Pr2GripperCommandAction) rospy.loginfo("Waiting for action server") client.wait_for_server() @@ -414,7 +353,7 @@ class Pr2OpenReal(ProcessModule): Tries to open an already grasped container """ - def _execute(self, designator: OpeningMotion.Motion) -> Any: + def _execute(self, designator: OpeningMotion) -> Any: giskard.achieve_open_container_goal(robot_description.get_tool_frame(designator.arm), designator.object_part.name) @@ -424,7 +363,7 @@ class Pr2CloseReal(ProcessModule): Tries to close an already grasped container """ - def _execute(self, designator: ClosingMotion.Motion) -> Any: + def _execute(self, designator: ClosingMotion) -> Any: giskard.achieve_close_container_goal(robot_description.get_tool_frame(designator.arm), designator.object_part.name) @@ -434,8 +373,6 @@ class Pr2Manager(ProcessModuleManager): def __init__(self): super().__init__("pr2") self._navigate_lock = Lock() - self._pick_up_lock = Lock() - self._place_lock = Lock() self._looking_lock = Lock() self._detecting_lock = Lock() self._move_tcp_lock = Lock() @@ -452,18 +389,6 @@ def navigate(self): elif ProcessModuleManager.execution_type == "real": return Pr2NavigationReal(self._navigate_lock) - def pick_up(self): - if ProcessModuleManager.execution_type == "simulated": - return Pr2PickUp(self._pick_up_lock) - elif ProcessModuleManager.execution_type == "real": - return Pr2PickUpReal(self._pick_up_lock) - - def place(self): - if ProcessModuleManager.execution_type == "simulated": - return Pr2Place(self._place_lock) - elif ProcessModuleManager.execution_type == "real": - return Pr2PlaceReal(self._place_lock) - def looking(self): if ProcessModuleManager.execution_type == "simulated": return Pr2MoveHead(self._looking_lock) diff --git a/src/pycram/process_modules/stretch_process_modules.py b/src/pycram/process_modules/stretch_process_modules.py new file mode 100644 index 000000000..e5aea17d3 --- /dev/null +++ b/src/pycram/process_modules/stretch_process_modules.py @@ -0,0 +1,347 @@ +from threading import Lock +from typing import Any + +import rospy + +from ..external_interfaces.robokudo import query +from ..helper import _apply_ik +from ..external_interfaces import giskard +from .default_process_modules import * +from ..world import World +from ..designators.motion_designator import * + + +class StretchNavigate(DefaultNavigation): + """ + Process module for the simulated Stretch that sends a cartesian goal to the robot to move the robot base + """ + pass + + +class StretchMoveHead(ProcessModule): + """ + Process module for the simulated Stretch that moves the head such that it looks at the given position + """ + + def _execute(self, designator: MoveMotion) -> Any: + target = designator.target + robot = World.robot + + local_transformer = LocalTransformer() + pose_in_pan = local_transformer.transform_pose(target, robot.get_link_tf_frame("link_head_pan")) + pose_in_tilt = local_transformer.transform_pose(target, robot.get_link_tf_frame("link_head_tilt")) + + new_pan = np.arctan2(pose_in_pan.position.y, pose_in_pan.position.x) + new_tilt = np.arctan2(-pose_in_tilt.position.y, + pose_in_tilt.position.z ** 2 + pose_in_tilt.position.x ** 2) * -1 + + current_pan = robot.get_joint_state("joint_head_pan") + current_tilt = robot.get_joint_state("joint_head_tilt") + + robot.set_joint_state("joint_head_pan", new_pan + current_pan) + robot.set_joint_state("joint_head_tilt", new_tilt + current_tilt) + + +class StretchMoveGripper(DefaultMoveGripper): + """ + Process module for the simulated Stretch that opens or closes the gripper + """ + pass + + +class StretchDetecting(DefaultDetecting): + """ + Process Module for the simulated Stretch that tries to detect an object fitting the given object description + """ + pass + + +class StretchMoveTCP(DefaultMoveTCP): + """ + Process module for the simulated Stretch that moves the tool center point of the robot + """ + pass + + +class StretchMoveArmJoints(DefaultMoveArmJoints): + """ + Process module for the simulated Stretch that moves the arm joints of the robot + """ + pass + + +class StretchMoveJoints(DefaultMoveJoints): + """ + Process module for the simulated Stretch that moves any joint of the robot + """ + pass + + +class StretchWorldStateDetecting(DefaultWorldStateDetecting): + """ + Process Module for the simulated Stretch that tries to detect an object using the world state + """ + pass + + +class StretchOpen(ProcessModule): + """ + Process module for the simulated Stretch that opens an already grasped container + """ + + def _execute(self, desig: OpeningMotion): + part_of_object = desig.object_part.bullet_world_object + + container_joint = part_of_object.find_joint_above(desig.object_part.name, JointType.PRISMATIC) + + goal_pose = link_pose_for_joint_config(part_of_object, { + container_joint: part_of_object.get_joint_limits(container_joint)[1] - 0.05}, desig.object_part.name) + + _move_arm_tcp(goal_pose, World.robot, desig.arm) + + desig.object_part.bullet_world_object.set_joint_state(container_joint, + part_of_object.get_joint_limits( + container_joint)[1] - 0.05) + + +class StretchClose(ProcessModule): + """ + Process module for the simulated Stretch that closes an already grasped container + """ + + def _execute(self, desig: ClosingMotion): + part_of_object = desig.object_part.world_object + + container_joint = part_of_object.find_joint_above(desig.object_part.name, JointType.PRISMATIC) + + goal_pose = link_pose_for_joint_config(part_of_object, { + container_joint: part_of_object.get_joint_limits(container_joint)[0]}, desig.object_part.name) + + _move_arm_tcp(goal_pose, World.robot, desig.arm) + + desig.object_part.world_object.set_joint_state(container_joint, + part_of_object.get_joint_limits( + container_joint)[0]) + + +def _move_arm_tcp(target: Pose, robot: Object, arm: str) -> None: + gripper = robot_description.get_tool_frame(arm) + + joints = robot_description.chains[arm].joints + + inv = request_ik(target, robot, joints, gripper) + _apply_ik(robot, inv, joints) + + +########################################################### +########## Process Modules for the Real Stretch ########### +########################################################### + + +class StretchNavigationReal(ProcessModule): + """ + Process module for the real Stretch that sends a cartesian goal to giskard to move the robot base + """ + + def _execute(self, designator: MoveMotion) -> Any: + rospy.logdebug(f"Sending goal to giskard to Move the robot") + giskard.achieve_cartesian_goal(designator.target, robot_description.base_link, "map") + + +class StretchMoveHeadReal(ProcessModule): + """ + Process module for the real robot to move that such that it looks at the given position. Uses the same calculation + as the simulated one + """ + + def _execute(self, desig: LookingMotion): + target = desig.target + robot = World.robot + + local_transformer = LocalTransformer() + pose_in_pan = local_transformer.transform_pose(target, robot.get_link_tf_frame("head_pan_link")) + pose_in_tilt = local_transformer.transform_pose(target, robot.get_link_tf_frame("head_tilt_link")) + + new_pan = np.arctan2(pose_in_pan.position.y, pose_in_pan.position.x) + new_tilt = np.arctan2(pose_in_tilt.position.z, pose_in_tilt.position.x ** 2 + pose_in_tilt.position.y ** 2) * -1 + + current_pan = robot.get_joint_state("head_pan_joint") + current_tilt = robot.get_joint_state("head_tilt_joint") + + giskard.avoid_all_collisions() + giskard.achieve_joint_goal({"head_pan_joint": new_pan + current_pan, + "head_tilt_joint": new_tilt + current_tilt}) + + +class StretchDetectingReal(ProcessModule): + """ + Process Module for the real Stretch that tries to detect an object fitting the given object description. Uses Robokudo + for perception of the environment. + """ + + def _execute(self, designator: DetectingMotion) -> Any: + query_result = query(ObjectDesignatorDescription(types=[designator.object_type])) + # print(query_result) + obj_pose = query_result["ClusterPoseBBAnnotator"] + + lt = LocalTransformer() + obj_pose = lt.transform_pose(obj_pose, World.robot.get_link_tf_frame("torso_lift_link")) + obj_pose.orientation = [0, 0, 0, 1] + obj_pose.position.x += 0.05 + + bullet_obj = World.current_world.get_objects_by_type(designator.object_type) + if bullet_obj: + bullet_obj[0].set_pose(obj_pose) + return bullet_obj[0] + elif designator.object_type == ObjectType.JEROEN_CUP: + cup = Object("cup", ObjectType.JEROEN_CUP, "jeroen_cup.stl", pose=obj_pose) + return cup + elif designator.object_type == ObjectType.BOWL: + bowl = Object("bowl", ObjectType.BOWL, "bowl.stl", pose=obj_pose) + return bowl + + return bullet_obj[0] + + +class StretchMoveTCPReal(ProcessModule): + """ + Moves the tool center point of the real Stretch while avoiding all collisions + """ + + def _execute(self, designator: MoveTCPMotion) -> Any: + lt = LocalTransformer() + pose_in_map = lt.transform_pose(designator.target, "map") + + if designator.allow_gripper_collision: + giskard.allow_gripper_collision(designator.arm) + giskard.achieve_cartesian_goal(pose_in_map, robot_description.get_tool_frame(designator.arm), + robot_description.base_link) + + +class StretchMoveArmJointsReal(ProcessModule): + """ + Moves the arm joints of the real Stretch to the given configuration while avoiding all collisions + """ + + def _execute(self, designator: MoveArmJointsMotion) -> Any: + joint_goals = {} + if designator.left_arm_poses: + joint_goals.update(designator.left_arm_poses) + if designator.right_arm_poses: + joint_goals.update(designator.right_arm_poses) + giskard.avoid_all_collisions() + giskard.achieve_joint_goal(joint_goals) + + +class StretchMoveJointsReal(ProcessModule): + """ + Moves any joint using giskard, avoids all collisions while doint this. + """ + + def _execute(self, designator: MoveJointsMotion) -> Any: + name_to_position = dict(zip(designator.names, designator.positions)) + giskard.avoid_all_collisions() + giskard.achieve_joint_goal(name_to_position) + + +class StretchMoveGripperReal(ProcessModule): + """ + Opens or closes the gripper of the real Stretch, gripper uses an action server for this instead of giskard + """ + + def _execute(self, designator: MoveGripperMotion) -> Any: + chain = robot_description.chains[designator.gripper].gripper.get_static_joint_chain(designator.motion) + giskard.achieve_joint_goal(chain) + + +class StretchOpenReal(ProcessModule): + """ + Tries to open an already grasped container + """ + + def _execute(self, designator: OpeningMotion) -> Any: + giskard.achieve_open_container_goal(robot_description.get_tool_frame(designator.arm), + designator.object_part.name) + + +class StretchCloseReal(ProcessModule): + """ + Tries to close an already grasped container + """ + + def _execute(self, designator: ClosingMotion) -> Any: + giskard.achieve_close_container_goal(robot_description.get_tool_frame(designator.arm), + designator.object_part.name) + + +class StretchManager(ProcessModuleManager): + def __init__(self): + super().__init__("stretch") + self._navigate_lock = Lock() + self._looking_lock = Lock() + self._detecting_lock = Lock() + self._move_tcp_lock = Lock() + self._move_arm_joints_lock = Lock() + self._world_state_detecting_lock = Lock() + self._move_joints_lock = Lock() + self._move_gripper_lock = Lock() + self._open_lock = Lock() + self._close_lock = Lock() + + def navigate(self): + if ProcessModuleManager.execution_type == "simulated": + return StretchNavigate(self._navigate_lock) + elif ProcessModuleManager.execution_type == "real": + return StretchNavigationReal(self._navigate_lock) + + def looking(self): + if ProcessModuleManager.execution_type == "simulated": + return StretchMoveHead(self._looking_lock) + elif ProcessModuleManager.execution_type == "real": + return StretchMoveHeadReal(self._looking_lock) + + def detecting(self): + if ProcessModuleManager.execution_type == "simulated": + return StretchDetecting(self._detecting_lock) + elif ProcessModuleManager.execution_type == "real": + return StretchDetectingReal(self._detecting_lock) + + def move_tcp(self): + if ProcessModuleManager.execution_type == "simulated": + return StretchMoveTCP(self._move_tcp_lock) + elif ProcessModuleManager.execution_type == "real": + return StretchMoveTCPReal(self._move_tcp_lock) + + def move_arm_joints(self): + if ProcessModuleManager.execution_type == "simulated": + return StretchMoveArmJoints(self._move_arm_joints_lock) + elif ProcessModuleManager.execution_type == "real": + return StretchMoveArmJointsReal(self._move_arm_joints_lock) + + def world_state_detecting(self): + if ProcessModuleManager.execution_type == "simulated" or ProcessModuleManager.execution_type == "real": + return StretchWorldStateDetecting(self._world_state_detecting_lock) + + def move_joints(self): + if ProcessModuleManager.execution_type == "simulated": + return StretchMoveJoints(self._move_joints_lock) + elif ProcessModuleManager.execution_type == "real": + return StretchMoveJointsReal(self._move_joints_lock) + + def move_gripper(self): + if ProcessModuleManager.execution_type == "simulated": + return StretchMoveGripper(self._move_gripper_lock) + elif ProcessModuleManager.execution_type == "real": + return StretchMoveGripperReal(self._move_gripper_lock) + + def open(self): + if ProcessModuleManager.execution_type == "simulated": + return StretchOpen(self._open_lock) + elif ProcessModuleManager.execution_type == "real": + return StretchOpenReal(self._open_lock) + + def close(self): + if ProcessModuleManager.execution_type == "simulated": + return StretchClose(self._close_lock) + elif ProcessModuleManager.execution_type == "real": + return StretchCloseReal(self._close_lock) diff --git a/src/pycram/resolver/__init__.py b/src/pycram/resolver/__init__.py index 82926eded..e69de29bb 100644 --- a/src/pycram/resolver/__init__.py +++ b/src/pycram/resolver/__init__.py @@ -1 +0,0 @@ -from .location.jpt_location import JPTCostmapLocation \ No newline at end of file diff --git a/src/pycram/resolver/location/database_location.py b/src/pycram/resolver/location/database_location.py index 4febdf360..35daae321 100644 --- a/src/pycram/resolver/location/database_location.py +++ b/src/pycram/resolver/location/database_location.py @@ -1,27 +1,58 @@ -import numpy as np +from dataclasses import dataclass + import sqlalchemy.orm import sqlalchemy.sql -from tf import transformations -import pycram.designators.location_designator -import pycram.task -from pycram.costmaps import OccupancyCostmap -from pycram.orm.action_designator import PickUpAction, Action -from pycram.orm.object_designator import Object -from pycram.orm.base import Position, RobotState, Designator, Base -from pycram.orm.task import TaskTreeNode, Code -from .jpt_location import JPTCostmapLocation -from ... import orm -from ...pose import Pose - - -class DatabaseCostmapLocation(pycram.designators.location_designator.CostmapLocation): +from sqlalchemy import select, Select +from typing_extensions import List, Type +from ...costmaps import Rectangle, OccupancyCostmap +from ...designator import LocationDesignatorDescription +from ...designators.location_designator import CostmapLocation +from ...orm.views import PickUpWithContextView +from ...datastructures.pose import Pose + + +@dataclass +class Location(LocationDesignatorDescription.Location): + """ + A location that is described by a pose, a reachable arm, a torso height and a grasp. + """ + pose: Pose + reachable_arm: str + torso_height: float + grasp: str + + +class AbstractCostmapLocation(CostmapLocation): + """ + Abstract Class for JPT and Database costmaps. + """ + + def __init__(self, target, reachable_for=None, reachable_arm=None): + """ + Create a new AbstractCostmapLocation instance. + :param target: The target object + :param reachable_for: + :param reachable_arm: + """ + super().__init__(target, reachable_for, None, reachable_arm, None) + + def create_occupancy_rectangles(self) -> List[Rectangle]: + """ + :return: A list of rectangles that represent the occupied space of the target object. + """ + # create Occupancy costmap for the target object + ocm = OccupancyCostmap(distance_to_obstacle=0.3, from_ros=False, size=200, resolution=0.02, + origin=self.target.pose) + return ocm.partitioning_rectangles() + + +class DatabaseCostmapLocation(AbstractCostmapLocation): """ Class that represents costmap locations from a given Database. The database has to have a schema that is compatible with the pycram.orm package. """ - def __init__(self, target, session: sqlalchemy.orm.Session = None, - reachable_for=None, reachable_arm=None, resolver=None): + def __init__(self, target, session: sqlalchemy.orm.Session = None, reachable_for=None, reachable_arm=None): """ Create a Database Costmap @@ -31,88 +62,60 @@ def __init__(self, target, session: sqlalchemy.orm.Session = None, :param reachable_arm: The arm to use """ - super().__init__(target, reachable_for, None, reachable_arm, resolver) + super().__init__(target, reachable_for, reachable_arm) self.session = session - def create_query_from_occupancy_costmap(self) -> sqlalchemy.orm.Query: + @staticmethod + def select_statement(view: Type[PickUpWithContextView]) -> Select: + return (select(view.arm, view.grasp, view.torso_height, view.relative_x, view.relative_y, view.quaternion_x, + view.quaternion_y, view.quaternion_z, view.quaternion_w).distinct()) + + def create_query_from_occupancy_costmap(self) -> Select: """ Create a query that queries all relative robot positions from an object that are not occluded using an OccupancyCostmap. """ - robot_pos = sqlalchemy.orm.aliased(Position) - object_pos = sqlalchemy.orm.aliased(Position) - - # query all relative robot positions in regard to an objects position - # make sure to order the joins() correctly - query = (self.session.query(PickUpAction.arm, PickUpAction.grasp, RobotState.torso_height, Position.x, - Position.y).join(TaskTreeNode.code) - .join(Code.designator.of_type(PickUpAction)) - .join(PickUpAction.robot_state) - .join(RobotState.pose) - .join(orm.base.Pose.position) - .join(PickUpAction.object).filter(Object.type == self.target.type) - .filter(TaskTreeNode.status == "SUCCEEDED")) + view = PickUpWithContextView - # create Occupancy costmap for the target object - position, orientation = self.target.pose.to_list() - position = list(position) - position[-1] = 0 + # get query + query = self.select_statement(view) - ocm = OccupancyCostmap(distance_to_obstacle=0.3, from_ros=False, size=200, resolution=0.02, - origin=Pose(position, orientation)) - # ocm.visualize() - - # working on a copy of the costmap, since found rectangles are deleted - map = np.copy(ocm.map) - - origin = np.array([ocm.height / 2, ocm.width / 2]) + # constraint query to correct object type and successful task status + query = query.where(view.obj_type == self.target.obj_type).where(view.status == "SUCCEEDED") filters = [] - # for every index pair (i, j) in the occupancy map - for i in range(0, map.shape[0]): - for j in range(0, map.shape[1]): - - # if this index has not been used yet - if map[i][j] > 0: - # get consecutive box - width = ocm._find_consectuive_line((i, j), map) - height = ocm._find_max_box_height((i, j), width, map) - - # mark box as used - map[i:i + height, j:j + width] = 0 + # for every rectangle + for rectangle in self.create_occupancy_rectangles(): + # add sql filter + filters.append(sqlalchemy.and_(view.relative_x >= rectangle.x_lower, + view.relative_x < rectangle.x_upper, + view.relative_y >= rectangle.y_lower, + view.relative_y < rectangle.y_upper)) - # calculate to coordinates relative to the objects pose - pose = np.array([i, j]) - lower_corner = (pose - origin) * ocm.resolution - upper_corner = (pose - origin + np.array([height, width])) * ocm.resolution - rectangle = np.array([lower_corner, upper_corner]).T + return query.where(sqlalchemy.or_(*filters)) - # transform to jpt query - filters.append(sqlalchemy.and_(robot_pos.x >= rectangle[0][0], robot_pos.x < rectangle[0][1], - robot_pos.y >= rectangle[1][0], robot_pos.y < rectangle[1][1])) - # query = self.model.bind({"x": list(rectangle[0]), "y": list(rectangle[1])}) - - return query.filter(sqlalchemy.or_(*filters)) - - def sample_to_location(self, sample: sqlalchemy.engine.row.Row) -> JPTCostmapLocation.Location: + def sample_to_location(self, sample: sqlalchemy.engine.row.Row) -> Location: """ Convert a database row to a costmap location. :param sample: The database row. :return: The costmap location """ + target_x, target_y, target_z = self.target.pose.position_as_list() - pose = [target_x + sample.x, target_y + sample.y, 0] - angle = np.arctan2(pose[1] - target_y, pose[0] - target_x) + np.pi - orientation = list(transformations.quaternion_from_euler(0, 0, angle, axes="sxyz")) + position = [target_x + sample[3], target_y + sample[4], 0] + orientation = [sample[5], sample[6], sample[7], sample[8]] - result = JPTCostmapLocation.Location(Pose(pose, orientation), sample.arm, sample.torso_height, sample.grasp) + result = Location(Pose(position, orientation), sample.arm, sample.torso_height, sample.grasp) return result - def __iter__(self) -> JPTCostmapLocation.Location: - query = self.create_query_from_occupancy_costmap().limit(200) - samples = query.all() - for sample in samples: - yield self.sample_to_location(sample) + def __iter__(self) -> Location: + statement = self.create_query_from_occupancy_costmap().limit(200) + samples = self.session.execute(statement).all() + if samples: + for sample in samples: + yield self.sample_to_location(sample) + else: + raise ValueError("No samples found") diff --git a/src/pycram/resolver/location/giskard_location.py b/src/pycram/resolver/location/giskard_location.py index c031ed840..3d8ee79ec 100644 --- a/src/pycram/resolver/location/giskard_location.py +++ b/src/pycram/resolver/location/giskard_location.py @@ -1,14 +1,12 @@ -from pycram.external_interfaces.giskard import achieve_cartesian_goal -from pycram.designators.location_designator import CostmapLocation -from pycram.bullet_world import Use_shadow_world, BulletWorld -from pycram.helper import _apply_ik -from pycram.pose import Pose -from pycram.robot_descriptions import robot_description +from ...external_interfaces.giskard import achieve_cartesian_goal +from ...designators.location_designator import CostmapLocation +from pycram.world import UseProspectionWorld, World +from pycram.datastructures.pose import Pose +from ...robot_descriptions import robot_description from pycram.pose_generator_and_validator import reachability_validator -from typing import Tuple, Dict +from typing_extensions import Tuple, Dict import tf -import numpy as np class GiskardLocation(CostmapLocation): @@ -28,8 +26,8 @@ def __iter__(self) -> CostmapLocation.Location: pose_left, end_config_left = self._get_reachable_pose_for_arm(self.target, robot_description.get_tool_frame("left")) - test_robot = BulletWorld.current_bullet_world.get_shadow_object(BulletWorld.robot) - with Use_shadow_world(): + test_robot = World.current_world.get_prospection_object_for_object(World.robot) + with UseProspectionWorld(): valid, arms = reachability_validator(pose_right, test_robot, self.target, {}) if valid: yield CostmapLocation.Location(pose_right, arms) diff --git a/src/pycram/resolver/location/jpt_location.py b/src/pycram/resolver/location/jpt_location.py deleted file mode 100644 index 2f728d14c..000000000 --- a/src/pycram/resolver/location/jpt_location.py +++ /dev/null @@ -1,254 +0,0 @@ -import dataclasses -import time -from typing import Optional, List, Tuple - -import jpt -import numpy as np -import pybullet -import tf - -import pycram.designators.location_designator -import pycram.task -from ...costmaps import OccupancyCostmap, plot_grid -from ...plan_failures import PlanFailure -from ...pose import Pose -from pycram.bullet_world import BulletWorld, Object - - -class JPTCostmapLocation(pycram.designators.location_designator.CostmapLocation): - """Costmap Locations using Joint Probability Trees (JPTs). - JPT costmaps are trained to model the dependency with a robot position relative to the object, the robots type, - the objects type, the robot torso height, and the grasp parameters. - Solutions to the problem definitions are chosen in such a way that the success probability is highest. - """ - - @dataclasses.dataclass - class Location(pycram.designators.location_designator.LocationDesignatorDescription.Location): - pose: Pose - reachable_arm: str - torso_height: float - grasp: str - - def __init__(self, target: Object, reachable_for=None, reachable_arm=None, - model: Optional[jpt.trees.JPT] = None, path: Optional[str] = None, resolver=None): - """ - Create a JPT Costmap - - :param target: The target object - :param reachable_for: The robot to grab the object with - :param reachable_arm: The arm to use - :param model: The JPT model as a loaded tree in memory, either model or path must be set - :param path: The path to the JPT model, either model or path must be set - """ - super().__init__(target, reachable_for, None, reachable_arm, resolver) - # check if arguments are plausible - if (not model and not path) or (model and path): - raise ValueError("Either model or path must be set.") - - # set model - if model: - self.model = model - - # load model from path - if path: - self.model = jpt.trees.JPT.load(path) - - # initialize member for visualized objects - self.visual_ids: List[int] = [] - - def evidence_from_occupancy_costmap(self) -> List[jpt.variables.LabelAssignment]: - """ - Create a list of boxes that can be used as evidences for a jpt. The list of boxes describe areas where the - robot can stand. - - :return: List of evidences describing the found boxes - """ - - # create Occupancy costmap for the target object - position, orientation = self.target.pose.to_list() - position = list(position) - position[-1] = 0 - - ocm = OccupancyCostmap(distance_to_obstacle=0.3, from_ros=False, size=200, resolution=0.02, - origin=Pose(position, orientation)) - # ocm.visualize() - - # working on a copy of the costmap, since found rectangles are deleted - map = np.copy(ocm.map) - - # initialize result - queries = [] - - origin = np.array([ocm.height/2, ocm.width/2]) - - # for every index pair (i, j) in the occupancy map - for i in range(0, map.shape[0]): - for j in range(0, map.shape[1]): - - # if this index has not been used yet - if map[i][j] > 0: - - # get consecutive box - width = ocm._find_consectuive_line((i, j), map) - height = ocm._find_max_box_height((i, j), width, map) - - # mark box as used - map[i:i+height, j:j+width] = 0 - - # calculate to coordinates relative to the objects pose - pose = np.array([i, j]) - lower_corner = (pose - origin) * ocm.resolution - upper_corner = (pose - origin + np.array([height, width])) * ocm.resolution - rectangle = np.array([lower_corner, upper_corner]).T - - # transform to jpt query - query = self.model.bind({"x": list(rectangle[0]), "y": list(rectangle[1])}) - queries.append(query) - - return queries - - def create_evidence(self, use_success=True) -> jpt.variables.LabelAssignment: - """ - Create evidence usable for JPTs where type and status are set if wanted. - - :param use_success: Rather to set success or not - :return: The usable label-assignment - """ - evidence = dict() - - evidence["type"] = {self.target.type} - - if use_success: - evidence["status"] = {"SUCCEEDED"} - - return self.model.bind(evidence) - - def sample(self, amount: int = 1) -> np.ndarray: - """ - Sample from the locations that fit the CostMap and are not occupied. - - :param amount: The amount of samples to draw - :return: A numpy array containing the samples drawn from the tree. - """ - evidence = self.create_evidence() - - locations = self.evidence_from_occupancy_costmap() - solutions = [] - - for location in locations: - for variable, value in evidence.items(): - location[variable] = value - - for leaf in self.model.apply(location): - if leaf.probability(location) == 0: - continue - altered_leaf = leaf.conditional_leaf(location) - # success_probability = altered_leaf.probability(location) - success_probability = altered_leaf.probability(self.model.bind({"status": "SUCCEEDED"})) - - mpe_state, _ = altered_leaf.mpe(self.model.minimal_distances) - location["grasp"] = mpe_state["grasp"] - location["arm"] = mpe_state["arm"] - location["relative torso height"] = mpe_state["relative torso height"] - location["x"] = mpe_state["x"] - location["y"] = mpe_state["y"] - solutions.append((location, success_probability, leaf.prior)) - - solutions = sorted(solutions, key=lambda x: x[1], reverse=True) - best_solution = solutions[0] - conditional_model = self.model.conditional_jpt(best_solution[0]) - - # conditional_model.plot(plotvars=conditional_model.variables) - return conditional_model.sample(amount) - - def sample_to_location(self, sample: np.ndarray) -> Location: - """ - Convert a numpy array sampled from the JPT to a costmap-location - - :param sample: The drawn sample - :return: The usable costmap-location - """ - sample_dict = {variable.name: value for variable, value in zip(self.model.variables, sample)} - target_x, target_y, target_z = self.target.pose.position_as_list() - pose = [target_x + sample_dict["x"], target_y + sample_dict["y"], 0] - - angle = np.arctan2(pose[1] - target_y, pose[0] - target_x) + np.pi - - orientation = list(tf.transformations.quaternion_from_euler(0, 0, angle, axes="sxyz")) - torso_height = np.clip(target_z - sample_dict["relative torso height"], 0, 0.33) - result = self.Location(Pose(pose, orientation), sample_dict["arm"], torso_height, sample_dict["grasp"]) - return result - - def __iter__(self): - samples = self.sample(200) - for sample in samples: - yield self.sample_to_location(sample) - - def visualize(self): - """ - Plot the possible areas to stand in the BulletWorld. The opacity is the probability of success. - - """ - - evidence = self.create_evidence(use_success=False) - - conditional_model = self.model.conditional_jpt(evidence) - - for leaf in conditional_model.leaves.values(): - - success = leaf.distributions["status"].p({"SUCCEEDED"}) - - if success == 0: - continue - - x_intervals = leaf.distributions["x"].cdf.intervals - y_intervals = leaf.distributions["y"].cdf.intervals - - x_range = np.array([x_intervals[0].upper, x_intervals[-1].lower]) - y_range = np.array([y_intervals[0].upper, y_intervals[-1].lower]) - - center = np.array([sum(x_range) / 2, sum(y_range) / 2]) - - visual = pybullet.createVisualShape(pybullet.GEOM_BOX, - halfExtents=[(x_range[1] - x_range[0]) / 2, - (y_range[1] - y_range[0]) / 2, 0.001], - rgbaColor=[1, 0, 0, success], - visualFramePosition=[*center, 0]) - - self.visual_ids.append(visual) - - for id_list in np.array_split(np.array(self.visual_ids), np.ceil(len(self.visual_ids) / 127)): - # Dummy paramater since these are needed to spawn visual shapes as a multibody. - link_poses = [[0, 0, 0] for c in id_list] - link_orientations = [[0, 0, 0, 1] for c in id_list] - link_masses = [1.0 for c in id_list] - link_parent = [0 for c in id_list] - link_joints = [pybullet.JOINT_FIXED for c in id_list] - link_collision = [-1 for c in id_list] - link_joint_axis = [[1, 0, 0] for c in id_list] - - # The position at which the multibody will be spawned. Offset such that - # the origin referes to the centre of the costmap. - origin_pose = self.target.pose.to_list() - base_position = list(origin_pose[0]) - base_position[2] = 0 - - map_obj = pybullet.createMultiBody(baseVisualShapeIndex=-1, linkVisualShapeIndices=id_list, - basePosition=base_position, baseOrientation=origin_pose[1], - linkPositions=link_poses, - linkMasses=link_masses, linkOrientations=link_orientations, - linkInertialFramePositions=link_poses, - linkInertialFrameOrientations=link_orientations, - linkParentIndices=link_parent, - linkJointTypes=link_joints, linkJointAxis=link_joint_axis, - linkCollisionShapeIndices=link_collision) - self.visual_ids.append(map_obj) - - def close_visualization(self) -> None: - """ - Close all plotted objects. - - """ - for id in self.visual_ids: - pybullet.removeBody(id) - self.visual_ids = [] diff --git a/src/pycram/resolver/probabilistic/__init__.py b/src/pycram/resolver/probabilistic/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/src/pycram/resolver/probabilistic/probabilistic_action.py b/src/pycram/resolver/probabilistic/probabilistic_action.py new file mode 100644 index 000000000..348f0627e --- /dev/null +++ b/src/pycram/resolver/probabilistic/probabilistic_action.py @@ -0,0 +1,306 @@ +from dataclasses import dataclass +from sqlalchemy import select + +import portion +from probabilistic_model.probabilistic_circuit.distributions import GaussianDistribution, SymbolicDistribution +from probabilistic_model.probabilistic_circuit.probabilistic_circuit import ProbabilisticCircuit, \ + DecomposableProductUnit +from random_events.events import Event, ComplexEvent +from random_events.variables import Symbolic, Continuous +import tqdm +from typing_extensions import Optional, List, Iterator +from ...world import World +from ...costmaps import OccupancyCostmap, VisibilityCostmap +from ...designator import ActionDesignatorDescription, ObjectDesignatorDescription +from ...designators.actions.actions import MoveAndPickUpPerformable, ActionAbstract +from ...datastructures.enums import Arms, Grasp, TaskStatus +from ...local_transformer import LocalTransformer +from ...orm.task import TaskTreeNode +from ...orm.views import PickUpWithContextView +from ...plan_failures import ObjectUnreachable, PlanFailure +from ...datastructures.pose import Pose + + +class ProbabilisticAction: + """ + Abstract class for probabilistic actions. + """ + + @dataclass + class Variables: + """ + Variables for probabilistic actions. + + This inner class serves the purpose to define the variables that are used in a model and make them easily + accessible for the user. The user can access the variables by using the dot notation, e.g. `self.variables.x`. + + The members of this class have to be ordered the same way as the variables in the policy. + The order of the variables in the policy is most likely alphabetical by name. + """ + ... + + policy: ProbabilisticCircuit + """ + The policy that is used to determine the parameters. + """ + + variables: Variables + """ + The variables of this action. + """ + + def __init__(self, policy: Optional[ProbabilisticCircuit] = None): + if policy is None: + policy = self.default_policy() + self.policy = policy + self.variables = self.Variables(*self.policy.variables) + + def default_policy(self) -> ProbabilisticCircuit: + """ + Create a default policy for the action. + + :return: The default policy for the action + """ + raise NotImplementedError + + def sample_to_action(self, sample: List) -> ActionAbstract: + """ + Convert a sample from the policy to a performable action. + :param sample: The sample + :return: The action + """ + raise NotImplementedError + + +class GaussianCostmapModel: + """ + Class that generates a Gaussian Costmap around the center of an object. The costmap cuts out a square in the middle + that has side lengths given by ``distance_to_center``. + """ + + distance_to_center: float + """ + The side length of the cut out square. + """ + + variance: float + """ + The variance of the distributions involved + """ + + relative_x = Continuous("relative_x") + relative_y = Continuous("relative_y") + grasp = Symbolic("grasp", ["front", "left", "right"]) + arm = Symbolic("arm", ["left", "right"]) + + def __init__(self, distance_to_center: float = 0.2, variance: float = 0.5): + self.distance_to_center = distance_to_center + self.variance = variance + + def center_event(self) -> Event: + """ + Create an event that describes the center of the map. + """ + return Event({self.relative_x: portion.open(-self.distance_to_center, self.distance_to_center), + self.relative_y: portion.open(-self.distance_to_center, self.distance_to_center)}) + + def create_model_with_center(self) -> ProbabilisticCircuit: + """ + Create a fully factorized gaussian at the center of the map. + """ + centered_model = DecomposableProductUnit() + centered_model.add_subcircuit(GaussianDistribution(self.relative_x, 0., self.variance)) + centered_model.add_subcircuit(GaussianDistribution(self.relative_y, 0., self.variance)) + centered_model.add_subcircuit(SymbolicDistribution(self.grasp, + [1/len(self.grasp.domain)] * len(self.grasp.domain))) + centered_model.add_subcircuit(SymbolicDistribution(self.arm, + [1/len(self.arm.domain)] * len(self.arm.domain))) + return centered_model.probabilistic_circuit + + def create_model(self) -> ProbabilisticCircuit: + """ + Create a gaussian model that assumes mass everywhere besides the center square. + + :return: The probabilistic circuit + """ + centered_model = self.create_model_with_center() + outer_event = self.center_event().complement() + limiting_event = Event({self.relative_x: portion.open(-2, 2), + self.relative_y: portion.open(-2, 2)}) + event = outer_event & limiting_event + # go.Figure(event.plot()).show() + result, _ = centered_model.conditional(event) + return result + + +class MoveAndPickUp(ActionDesignatorDescription, ProbabilisticAction): + + @dataclass + class Variables: + arm: Symbolic = Symbolic("arm", ["left", "right"]) + grasp: Symbolic = Symbolic("grasp", ["front", "left", "right", "top"]) + relative_x: Continuous = Continuous("relative_x") + relative_y: Continuous = Continuous("relative_y") + + variables: Variables # Type hint variables + + sample_amount: int = 20 + """ + The amount of samples that should be drawn from the policy when iterating over it. + """ + + object_designator: ObjectDesignatorDescription.Object + """ + The object designator that should be picked up. + """ + + arms: List[Arms] + """ + The arms that can be used for the pick up. + """ + + grasps: List[Grasp] + """ + The grasps that can be used for the pick up. + """ + + def __init__(self, object_designator: ObjectDesignatorDescription.Object, arms: List[str], grasps: List[str], + policy: Optional[ProbabilisticCircuit] = None): + ActionDesignatorDescription.__init__(self) + ProbabilisticAction.__init__(self, policy) + self.object_designator = object_designator + self.arms = arms + self.grasps = grasps + + def default_policy(self) -> ProbabilisticCircuit: + return GaussianCostmapModel().create_model() + + def sample_to_action(self, sample: List) -> MoveAndPickUpPerformable: + """ + Convert a sample from the underlying distribution to a performable action. + :param sample: The sample + :return: The action + """ + arm, grasp, relative_x, relative_y = sample + position = [relative_x, relative_y, 0.] + pose = Pose(position, frame=self.object_designator.world_object.tf_frame) + standing_position = LocalTransformer().transform_pose(pose, "map") + standing_position.position.z = 0 + action = MoveAndPickUpPerformable(standing_position, self.object_designator, arm, grasp) + return action + + def events_from_occupancy_and_visibility_costmap(self) -> ComplexEvent: + """ + Create events from the occupancy and visibility costmap. + + :return: The events that can be used as evidence for the model. + """ + + # create occupancy and visibility costmap for the target object + ocm = OccupancyCostmap(distance_to_obstacle=0.3, from_ros=False, size=200, resolution=0.1, + origin=self.object_designator.pose) + vcm = VisibilityCostmap(min_height=1.27, max_height=1.69, + size=200, resolution=0.1, origin=self.object_designator.pose) + mcm = ocm + vcm + + # convert rectangles to events + events = [] + for rectangle in mcm.partitioning_rectangles(): + event = Event({self.variables.relative_x: portion.open(rectangle.x_lower, rectangle.x_upper), + self.variables.relative_y: portion.open(rectangle.y_lower, rectangle.y_upper)}) + events.append(event) + return ComplexEvent(events) + + def ground_model(self, model: Optional[ProbabilisticCircuit] = None, + event: Optional[ComplexEvent] = None) -> ProbabilisticCircuit: + """ + Ground the model to the current evidence. + + :param model: The model that should be grounded. If None, the policy is used. + :param event: The events that should be used as evidence. If None, the occupancy costmap is used. + :return: The grounded model + """ + + if model is None: + model = self.policy + if event is None: + event = self.events_from_occupancy_and_visibility_costmap() + + result, probability = model.conditional(event) + + if probability == 0: + raise ObjectUnreachable("No possible locations found") + + return result + + def iter_with_mode(self) -> Iterator[MoveAndPickUpPerformable]: + """ + Generate actions by sampling from the mode of the policy conditioned on visibility and occupancy. + """ + model = self.ground_model() + modes, _ = model.mode() + model = self.ground_model(model, modes) + samples = model.sample(self.sample_amount) + + for sample in samples: + action = self.sample_to_action(sample) + yield action + + def __iter__(self) -> Iterator[MoveAndPickUpPerformable]: + """ + Generate actions by sampling from the policy conditioned on visibility and occupancy. + """ + model = self.ground_model(self.policy, self.events_from_occupancy_and_visibility_costmap()) + samples = model.sample(self.sample_amount) + likelihoods = [model.likelihood(sample) for sample in samples] + + # sort samples by likelihood + samples = [x for _, x in sorted(zip(likelihoods, samples), key=lambda pair: pair[0], reverse=True)] + + for sample in samples: + action = self.sample_to_action(sample) + yield action + + def iterate_without_occupancy_costmap(self) -> Iterator[MoveAndPickUpPerformable]: + """ + Generate actions by sampling from the policy without conditioning on visibility and occupancy. + """ + samples = self.policy.sample(self.sample_amount) + for sample in samples: + action = self.sample_to_action(sample) + yield action + + @staticmethod + def query_for_database(): + view = PickUpWithContextView + query = (select(view.arm, view.grasp, view.relative_x, view.relative_y) + .where(view.status == TaskStatus.SUCCEEDED)) + return query + + def batch_rollout(self): + """ + Try the policy without conditioning on visibility and occupancy and count the successful tries. + + :amount: The amount of tries + """ + + # initialize statistics + successful_tries = 0 + total_tries = 0 + + # create the progress bar + progress_bar = tqdm.tqdm(iter(self.iterate_without_occupancy_costmap()), total=self.sample_amount) + + for action in progress_bar: + total_tries += 1 + try: + action.perform() + successful_tries += 1 + except PlanFailure as p: + pass + + # update progress bar + progress_bar.set_postfix({"Success Probability": successful_tries / total_tries}) + + # reset world + World.current_world.reset_current_world() diff --git a/src/pycram/robot_description.py b/src/pycram/robot_description.py index d8df6f5b8..7d7620435 100644 --- a/src/pycram/robot_description.py +++ b/src/pycram/robot_description.py @@ -3,7 +3,7 @@ import rospkg from copy import deepcopy from numbers import Number -from typing import List, Optional, Dict, Union, Type +from typing_extensions import List, Optional, Dict, Union, Type from urdf_parser_py.urdf import URDF from . import utils @@ -48,7 +48,7 @@ def add_static_joint_chains(self, static_joint_states: Dict[str, List[float]]) - """ for configuration, joint_states in static_joint_states.items(): if not self.add_static_joint_chain(configuration, joint_states): - logger.error("(robot_description) Could not add all static_joint_states for the chain %s.", self.name) + rospy.logerr("(robot_description) Could not add all static_joint_states for the chain %s.", self.name) break def add_static_joint_chain(self, configuration: str, static_joint_states: List[float]) -> Union[None, bool]: @@ -68,10 +68,10 @@ def add_static_joint_chain(self, configuration: str, static_joint_states: List[f self.static_joint_states[configuration] = static_joint_states return True else: - logger.warning("(robot_description) The chain %s already has static joint values " + rospy.logwarn("(robot_description) The chain %s already has static joint values " "for the config %s.", self.name, configuration) else: - logger.error("(robot_description) The number of the joint values does not equal the amount of the joints" + rospy.logerr("(robot_description) The number of the joint values does not equal the amount of the joints" "for the chain %s.", self.name) def get_static_joint_chain(self, configuration: str) -> Union[None, Dict[str, float]]: @@ -85,7 +85,7 @@ def get_static_joint_chain(self, configuration: str) -> Union[None, Dict[str, fl try: joint_values = self.static_joint_states[configuration] except KeyError: - logger.error("(robot_description) Configuration %s is unknown for the chain %s.", configuration, self.name) + rospy.logerr("(robot_description) Configuration %s is unknown for the chain %s.", configuration, self.name) return None return dict(zip(self.joints, joint_values)) @@ -139,7 +139,7 @@ class ManipulatorDescription(InteractionDescription): This class allows with the given interaction description to include a gripper description which is placed between the last link of the interaction description and the rest of it. - Independently from that a tool frame can be saved, which allows to use objects + Independently of that a tool frame can be saved, which allows to use objects to manipulate the environment:: |--> (tool_frame) @@ -186,7 +186,7 @@ class GraspingDescription: """ def __init__(self, grasp_dir: Optional[Dict] = None): self.grasps: Dict[str, List[float]] = grasp_dir if grasp_dir else {} - self.grasps_for_object: Dict['bullet_world.Object', List[str]] = {} + self.grasps_for_object: Dict['world.Object', List[str]] = {} def add_grasp(self, grasp: str, orientation: List[float]) -> None: """ @@ -198,7 +198,7 @@ def add_grasp(self, grasp: str, orientation: List[float]) -> None: """ self.grasps[grasp] = orientation - def add_graspings_for_object(self, grasps: List[str], object: 'bullet_world.Object') -> None: + def add_graspings_for_object(self, grasps: List[str], object: 'world.Object') -> None: """ Adds all possible Grasps for the specified object. The used grasps have to be registered beforehand via the add_grasp method. @@ -214,7 +214,7 @@ def get_all_grasps(self) -> List[str]: def get_orientation_for_grasp(self, grasp: str) -> List[float]: return self.grasps[grasp] - def get_grasps_for_object(self, object: 'bullet_world.Object') -> List[str]: + def get_grasps_for_object(self, object: 'world.Object') -> List[str]: return self.grasps_for_object[object] @@ -260,8 +260,8 @@ def __init__(self, name: str, rospack = rospkg.RosPack() filename = rospack.get_path('pycram') + '/resources/' + name + '.urdf' with open(filename) as f: - with utils.suppress_stdout_stderr(): - self.robot_urdf = URDF.from_xml_string(f.read()) + # with utils.suppress_stdout_stderr(): + self.robot_urdf = URDF.from_xml_string(f.read()) def _safely_access_chains(self, chain_name: str, verbose: Optional[bool] = True) -> Union[None, ChainDescription]: """ @@ -272,7 +272,7 @@ def _safely_access_chains(self, chain_name: str, verbose: Optional[bool] = True) chain_description = self.chains[chain_name] except KeyError: if verbose: - logger.warning("(robot_description) Chain name %s is unknown.", chain_name) + rospy.logwarn("(robot_description) Chain name %s is unknown.", chain_name) return None return chain_description @@ -295,10 +295,10 @@ def _get_chain_description(self, chain_name: str, if type(chain_description) is description_type: return chain_description else: - logger.error("(robot_description) The chain %s is not of type %s, but of type %s.", + rospy.logerr("(robot_description) The chain %s is not of type %s, but of type %s.", chain_name, description_type, type(chain_description)) else: - logger.warning("(robot_description) Only subclasses of ChainDescription are allowed.") + rospy.logwarn("(robot_description) Only subclasses of ChainDescription are allowed.") def get_tool_frame(self, manipulator_name: str) -> Union[None, str]: """ @@ -310,7 +310,7 @@ def get_tool_frame(self, manipulator_name: str) -> Union[None, str]: if manipulator_description: return manipulator_description.tool_frame else: - logger.error("(robot_description) Could not get the tool frame of the manipulator %s.", manipulator_name) + rospy.logerr("(robot_description) Could not get the tool frame of the manipulator %s.", manipulator_name) def get_static_joint_chain(self, chain_name: str, configuration: str) -> Union[None, Dict[str, float]]: """ @@ -322,7 +322,7 @@ def get_static_joint_chain(self, chain_name: str, configuration: str) -> Union[N if chain_description: return chain_description.get_static_joint_chain(configuration) else: - logger.error("(robot_description) Could not get static joint chain called %s of the chain %s.", + rospy.logerr("(robot_description) Could not get static joint chain called %s of the chain %s.", configuration, chain_name) def get_static_tf(self, base_link: str, target_link: str): @@ -338,11 +338,11 @@ def add_chain(self, name: str, chain_description: ChainDescription) -> Union[Non """ if issubclass(type(chain_description), ChainDescription): if self._safely_access_chains(name, verbose=False): - logger.warning("(robot_description) Replacing the chain description of the name %s.", name) + rospy.logwarn("(robot_description) Replacing the chain description of the name %s.", name) self.chains[name] = chain_description return True else: - logger.error("(robot_description) Given chain_description object is no subclass of ChainDescription.") + rospy.logerr("(robot_description) Given chain_description object is no subclass of ChainDescription.") def add_chains(self, chains_dict: Dict[str, ChainDescription]) -> None: """ @@ -354,7 +354,7 @@ def add_chains(self, chains_dict: Dict[str, ChainDescription]) -> None: """ for name, chain in chains_dict.items(): if not self.add_chain(name, chain): - logger.error("(robot_description) Could not add the chain object of name %s.", name) + rospy.logerr("(robot_description) Could not add the chain object of name %s.", name) break def add_camera(self, name: str, camera_description: CameraDescription) -> Union[None, bool]: @@ -369,11 +369,11 @@ def add_camera(self, name: str, camera_description: CameraDescription) -> Union[ except KeyError: found = False if found: - logger.warning("(robot_description) Replacing the camera description of the name %s.", name) + rospy.logwarn("(robot_description) Replacing the camera description of the name %s.", name) self.cameras[name] = camera_description return True else: - logger.error("(robot_description) Given camera_description object is not of type CameraDescription.") + rospy.logerr("(robot_description) Given camera_description object is not of type CameraDescription.") def add_cameras(self, cameras_dict: Dict[str, CameraDescription]) -> None: """ @@ -385,7 +385,7 @@ def add_cameras(self, cameras_dict: Dict[str, CameraDescription]) -> None: """ for name, camera in cameras_dict.items(): if not self.add_camera(name, camera): - logger.error("(robot_description) Could not add the camera object of name %s.", name) + rospy.logerr("(robot_description) Could not add the camera object of name %s.", name) break def get_camera_frame(self, camera_name: str) -> Union[None, str]: @@ -397,7 +397,7 @@ def get_camera_frame(self, camera_name: str) -> Union[None, str]: try: camera_description = self.cameras[camera_name] except KeyError: - logger.error("(robot_description) Camera name %s is unknown.", camera_name) + rospy.logerr("(robot_description) Camera name %s is unknown.", camera_name) return None return camera_description.frame @@ -426,7 +426,7 @@ def add_static_joint_chains(self, chain_name: str, static_joint_states: Dict[str """ for configuration, joint_states in static_joint_states.items(): if not self.add_static_joint_chain(chain_name, configuration, joint_states): - logger.error("(robot_description) Could not add the static joint chain called %s for chain %s.", + rospy.logerr("(robot_description) Could not add the static joint chain called %s for chain %s.", configuration, chain_name) break @@ -456,7 +456,7 @@ def add_static_gripper_chains(self, manipulator_name: str, static_joint_states: """ for configuration, joint_states in static_joint_states.items(): if not self.add_static_gripper_chain(manipulator_name, configuration, joint_states): - logger.error("(robot_description) Could not add static gripper chain called %s for manipulator chain %s.", + rospy.logerr("(robot_description) Could not add static gripper chain called %s for manipulator chain %s.", configuration, manipulator_name) break diff --git a/src/pycram/robot_descriptions/__init__.py b/src/pycram/robot_descriptions/__init__.py index 897e86d4d..7a40acb8b 100644 --- a/src/pycram/robot_descriptions/__init__.py +++ b/src/pycram/robot_descriptions/__init__.py @@ -5,10 +5,11 @@ from .boxy_description import BoxyDescription from .donbot_description import DonbotDescription -from .hsr_description import HSRDescription +from .hsrb_description import HSRBDescription from .pr2_description import PR2Description from .ur5_description import UR5Description from .tiago_description import TiagoDescription +from .stretch_description import StretchDescription from .. import utils from ..robot_description import RobotDescription @@ -55,19 +56,21 @@ def update_robot_description(robot_name=None, from_ros=None): description = PR2Description elif 'boxy' in robot: description = BoxyDescription - elif 'hsr' in robot: - description = HSRDescription + elif 'hsrb' in robot: + description = HSRBDescription elif "ur5_robotiq" in robot: description = UR5Description elif "tiago_dual" in robot: description = TiagoDescription + elif "stretch" in robot: + description = StretchDescription else: logger.error("(robot-description) The given robot name %s has no description class.", robot_name) return None return InitializedRobotDescription(description) -with utils.suppress_stdout_stderr(): - update_robot_description(from_ros=True) # "ur5_robotiq")# # todo: put in ros init +# with utils.suppress_stdout_stderr(): +update_robot_description(from_ros=True) # "ur5_robotiq")# # todo: put in ros init robot_description = InitializedRobotDescription.i diff --git a/src/pycram/robot_descriptions/hsr_description.py b/src/pycram/robot_descriptions/hsrb_description.py similarity index 83% rename from src/pycram/robot_descriptions/hsr_description.py rename to src/pycram/robot_descriptions/hsrb_description.py index 053a58b13..197d64e4c 100644 --- a/src/pycram/robot_descriptions/hsr_description.py +++ b/src/pycram/robot_descriptions/hsrb_description.py @@ -1,10 +1,9 @@ from ..robot_description import * -class HSRDescription(RobotDescription): +class HSRBDescription(RobotDescription): def __init__(self): - super().__init__("hsrb", "base_footprint", "base_link", "arm_lift_link", "arm_lift_joint") # Camera head_center_camera = CameraDescription("head_center_camera_frame", @@ -25,7 +24,7 @@ def __init__(self): # Neck neck_links = ["head_pan_link", "head_tilt_link"] neck_joints = ["head_pan_joint", "head_tilt_joint"] - neck_forward = {"forward": [0.0, 0.0], "down": [0.0, -0.7]} + neck_forward = {"forward": [0.0, 0.0], "down": [0.0, 0, -0.7]} neck_chain = ChainDescription("neck", neck_joints, neck_links, static_joint_states=neck_forward) self.add_chain("neck", neck_chain) # Arm @@ -33,17 +32,21 @@ def __init__(self): arm_links = ["arm_flex_link", "arm_roll_link", "wrist_flex_link", "wrist_roll_link"] arm_carry = {"park": [0, 1.5, -1.85, 0]} gripper_links = ["hand_l_distal_link", "hand_l_spring_proximal_link", "hand_palm_link", - "hand_r_distal_link", "hand_r_spring_proximal_link"] - gripper_joints = ["hand_motor_joint"] + "hand_r_distal_link", "hand_r_spring_proximal_link", "hand_gripper_tool_frame"] + gripper_joints = ["hand_l_proximal_joint", "hand_r_proximal_joint", "hand_motor_joint"] gripper = GripperDescription("gripper", gripper_links=gripper_links, gripper_joints=gripper_joints, gripper_meter_to_jnt_multiplier=1.0, gripper_minimal_position=0.0, gripper_convergence_delta=0.001) arm_chain = ChainDescription("left", arm_joints, arm_links, static_joint_states=arm_carry) arm_inter = InteractionDescription(arm_chain, "wrist_roll_link") - arm_manip = ManipulatorDescription(arm_inter, tool_frame="gripper_tool_frame", gripper_description=gripper) + arm_manip = ManipulatorDescription(arm_inter, tool_frame="hand_gripper_tool_frame", gripper_description=gripper) self.add_chain("left", arm_manip) self.add_static_gripper_chains("left", {"open": [0.3], "close": [0.0]}) + self.grasps = GraspingDescription( + {"front": [-1, 0, -1, 0], + "left": [0, -1, 1, 0], + "right": [0, -1, -1, 0.0], + "top": [-1, 0, 0, 0]}) - def get_camera_frame(self, name="head_center_camera"): - # TODO: Hacky since only one optical camera frame from pr2 is used + def get_camera_frame(self, name="head_center_camera_frame"): return super().get_camera_frame(name) \ No newline at end of file diff --git a/src/pycram/robot_descriptions/stretch_description.py b/src/pycram/robot_descriptions/stretch_description.py new file mode 100644 index 000000000..503df6ede --- /dev/null +++ b/src/pycram/robot_descriptions/stretch_description.py @@ -0,0 +1,71 @@ +from ..robot_description import * +import numpy as np +import tf + + +class StretchDescription(RobotDescription): + + def __init__(self): + super().__init__("stretch", "base_link", "base_link", "link_lift", "joint_lift") + + realsense_color = CameraDescription('camera_color_optical_frame', horizontal_angle=1.047, vertical_angle=0.785, + minimal_height=1.322, maximal_height=1.322) + + realsense_depth = CameraDescription('camera_depth_optical_frame', horizontal_angle=1.047, vertical_angle=0.785, + minimal_height=1.307, maximal_height=1.307) + + realsense_infra1 = CameraDescription('camera_infra1_optical_frame', horizontal_angle=1.047, + vertical_angle=0.785, + minimal_height=1.307, maximal_height=1.307) + realsense_infra2 = CameraDescription('camera_infra2_optical_frame', horizontal_angle=1.047, + vertical_angle=0.785, + minimal_height=1.257, maximal_height=1.257) + self.add_cameras( + {'color': realsense_color, 'depth': realsense_depth, 'infra1': realsense_infra1, + 'infra2': realsense_infra2}) + + self.front_facing_axis = [0, 0, 1] + + neck = ChainDescription("neck", ["joint_head_pan", "joint_head_tilt"], + ["link_head_pan", "link_head_tilt"]) + self.add_chain("neck", neck) + + arm_joints = ['joint_lift', 'joint_arm_l3', 'joint_arm_l2', 'joint_arm_l1', 'joint_arm_l0', "joint_wrist_yaw", + "joint_wrist_pitch", "joint_wrist_roll"] + arm_links = ['link_lift', 'link_arm_l3', 'link_arm_l2', 'link_arm_l1', 'link_arm_l0', "link_wrist_yaw", + "link_wrist_pitch", "link_wrist_roll"] + + arm_chain_desc = ChainDescription("arm", arm_joints, arm_links) + arm_inter_desc = InteractionDescription(arm_chain_desc, "link_wrist_yaw") + + gripper_links = ['link_gripper_finger_left', 'link_gripper_fingertip_left', + 'link_gripper_finger_right', 'link_gripper_fingertip_right', 'link_grasp_center'] + gripper_joints = ['joint_gripper_finger_left', 'joint_gripper_finger_right'] + arm_gripper_desc = GripperDescription("arm", gripper_links, gripper_joints, + gripper_meter_to_jnt_multiplier=5.0, + gripper_minimal_position=0.013, + gripper_convergence_delta=0.005) + + arm_desc = ManipulatorDescription(arm_inter_desc, tool_frame="link_grasp_center", + gripper_description=arm_gripper_desc) + self.add_chains({"arm": arm_desc, "right": arm_desc, "left": arm_desc}) + + arm_park = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] + self.add_static_joint_chain("arm", "park", arm_park) + + gripper_confs = {"open": [0.59, 0.59], "close": [0.0, 0.0]} + self.add_static_gripper_chains("arm", gripper_confs) + + self.grasps = GraspingDescription({"front": [0, 0, 0, 1], + "left": [0, 0, -1, 1], + "right": [0, 0, 1, 1], + "top": [0, 1, 0, 1]}) + + def get_camera_frame(self, name="color"): + return super().get_camera_frame(name) + + @staticmethod + def stretch_orientation_generator(position, origin): + angle = np.arctan2(position[1] - origin.position.y, position[0] - origin.position.x) + np.pi + np.pi / 16 + quaternion = list(tf.transformations.quaternion_from_euler(0, 0, angle + np.pi / 2, axes="sxyz")) + return quaternion diff --git a/src/pycram/ros/force_torque_sensor.py b/src/pycram/ros/force_torque_sensor.py index d61f292a3..aee3b8f46 100644 --- a/src/pycram/ros/force_torque_sensor.py +++ b/src/pycram/ros/force_torque_sensor.py @@ -3,36 +3,36 @@ import threading import rospy -import pybullet as pb from geometry_msgs.msg import WrenchStamped from std_msgs.msg import Header -from..bullet_world import BulletWorld +from pycram.world import World class ForceTorqueSensor: """ Simulated force-torque sensor for a joint with a given name. - Reads simulated forces and torques at that joint from bullet_world and publishes geometry_msgs/Wrench messages + Reads simulated forces and torques at that joint from world and publishes geometry_msgs/Wrench messages to the given topic. """ def __init__(self, joint_name, fts_topic="/pycram/fts", interval=0.1): """ - The given joint_name has to be part of :py:attr:`~pycram.bullet_world.BulletWorld.robot` otherwise a + The given joint_name has to be part of :py:attr:`~pycram.world.World.robot` otherwise a RuntimeError will be raised. :param joint_name: Name of the joint for which force-torque should be simulated :param fts_topic: Name of the ROS topic to which should be published :param interval: Interval at which the messages should be published, in seconds """ - self.world = BulletWorld.current_bullet_world + self.world = World.current_world self.fts_joint_idx = None self.joint_name = joint_name - if joint_name in self.world.robot.joints.keys(): - self.fts_joint_idx = self.world.robot.joints[joint_name] + if joint_name in self.world.robot.joint_name_to_id.keys(): + self.fts_joint_idx = self.world.robot.joint_name_to_id[joint_name] else: - raise RuntimeError(f"Could not register ForceTorqueSensor: Joint {joint_name} does not exist in robot object") - pb.enableJointForceTorqueSensor(self.world.robot.id, self.fts_joint_idx, enableSensor=1) + raise RuntimeError(f"Could not register ForceTorqueSensor: Joint {joint_name}" + f" does not exist in robot object") + self.world.enable_joint_force_torque_sensor(self.world.robot, self.fts_joint_idx) self.fts_pub = rospy.Publisher(fts_topic, WrenchStamped, queue_size=10) self.interval = interval @@ -50,8 +50,7 @@ def _publish(self) -> None: """ seq = 0 while not self.kill_event.is_set(): - current_joint_state = pb.getJointState(self.world.robot.id, self.fts_joint_idx) - joint_ft = current_joint_state[2] + joint_ft = self.world.get_joint_reaction_force_torque(self.world.robot, self.fts_joint_idx) h = Header() h.seq = seq h.stamp = rospy.Time.now() diff --git a/src/pycram/ros/joint_state_publisher.py b/src/pycram/ros/joint_state_publisher.py index 8cefe2547..f420eec4e 100644 --- a/src/pycram/ros/joint_state_publisher.py +++ b/src/pycram/ros/joint_state_publisher.py @@ -6,22 +6,22 @@ from sensor_msgs.msg import JointState from std_msgs.msg import Header -from ..bullet_world import BulletWorld +from pycram.world import World class JointStatePublisher: """ - Joint state publisher for the robot currently loaded in the BulletWorld + Joint state publisher for the robot currently loaded in the World """ def __init__(self, joint_state_topic="/pycram/joint_state", interval=0.1): """ - Robot object is from :py:attr:`~pycram.bullet_world.BulletWorld.robot` and current joint states are published to + Robot object is from :py:attr:`~pycram.world.World.robot` and current joint states are published to the given joint_state_topic as a JointState message. :param joint_state_topic: Topic name to which the joint states should be published :param interval: Interval at which the joint states should be published, in seconds """ - self.world = BulletWorld.current_bullet_world + self.world = World.current_world self.joint_state_pub = rospy.Publisher(joint_state_topic, JointState, queue_size=10) self.interval = interval @@ -33,15 +33,15 @@ def __init__(self, joint_state_topic="/pycram/joint_state", interval=0.1): def _publish(self) -> None: """ - Publishes the current joint states of the :py:attr:`~pycram.bullet_world.BulletWorld.robot` in an infinite loop. + Publishes the current joint states of the :py:attr:`~pycram.world.World.robot` in an infinite loop. The joint states are published as long as the kill_event is not set by :py:meth:`~JointStatePublisher._stop_publishing` """ - robot = BulletWorld.robot - joint_names = [joint_name for joint_name in robot.joints.keys()] + robot = World.robot + joint_names = [joint_name for joint_name in robot.joint_name_to_id.keys()] seq = 0 while not self.kill_event.is_set(): - current_joint_states = [robot.get_joint_state(joint_name) for joint_name in joint_names] + current_joint_states = [robot.get_joint_position(joint_name) for joint_name in joint_names] h = Header() h.stamp = rospy.Time.now() h.seq = seq diff --git a/src/pycram/ros/robot_state_updater.py b/src/pycram/ros/robot_state_updater.py index 6f8382544..72b602e31 100644 --- a/src/pycram/ros/robot_state_updater.py +++ b/src/pycram/ros/robot_state_updater.py @@ -1,20 +1,20 @@ import rospy -import threading import atexit import tf import time from geometry_msgs.msg import TransformStamped from sensor_msgs.msg import JointState -from pycram.bullet_world import BulletWorld -from pycram.robot_descriptions import robot_description -from pycram.pose import Transform, Pose +from pycram.world import World +from ..robot_descriptions import robot_description +from pycram.datastructures.pose import Pose class RobotStateUpdater: """ - Updates the robot in the Bullet World with information of the real robot published to ROS topics. + Updates the robot in the World with information of the real robot published to ROS topics. Infos used to update the robot are: + * The current pose of the robot * The current joint state of the robot """ @@ -31,10 +31,8 @@ def __init__(self, tf_topic: str, joint_state_topic: str): self.tf_topic = tf_topic self.joint_state_topic = joint_state_topic - self.tf_timer = rospy.Timer(rospy.Duration(0.1), self._subscribe_tf) - self.joint_state_timer = rospy.Timer(rospy.Duration(0.1), self._subscribe_joint_state) - - + self.tf_timer = rospy.Timer(rospy.Duration.from_sec(0.1), self._subscribe_tf) + self.joint_state_timer = rospy.Timer(rospy.Duration.from_sec(0.1), self._subscribe_joint_state) atexit.register(self._stop_subscription) @@ -45,27 +43,26 @@ def _subscribe_tf(self, msg: TransformStamped) -> None: :param msg: TransformStamped message published to the topic """ trans, rot = self.tf_listener.lookupTransform("/map", robot_description.base_frame, rospy.Time(0)) - BulletWorld.robot.set_pose(Pose(trans, rot)) + World.robot.set_pose(Pose(trans, rot)) def _subscribe_joint_state(self, msg: JointState) -> None: """ - Sets the current joint configuration of the robot in the bullet world to the configuration published on the topic. - Since this uses rospy.wait_for_message which can have errors when used with threads there might be an attribute error - in the rospy implementation. + Sets the current joint configuration of the robot in the world to the configuration published on the + topic. Since this uses rospy.wait_for_message which can have errors when used with threads there might be an + attribute error in the rospy implementation. :param msg: JointState message published to the topic. """ try: msg = rospy.wait_for_message(self.joint_state_topic, JointState) for name, position in zip(msg.name, msg.position): - BulletWorld.robot.set_joint_state(name, position) + World.robot.set_joint_position(name, position) except AttributeError: pass - def _stop_subscription(self) -> None: """ - Stops the Timer for TF and joint states and therefore the updating of the robot in the bullet world. + Stops the Timer for TF and joint states and therefore the updating of the robot in the world. """ self.tf_timer.shutdown() self.joint_state_timer.shutdown() diff --git a/src/pycram/ros/tf_broadcaster.py b/src/pycram/ros/tf_broadcaster.py index 14a7e635c..ab14c1297 100644 --- a/src/pycram/ros/tf_broadcaster.py +++ b/src/pycram/ros/tf_broadcaster.py @@ -3,14 +3,14 @@ import threading import atexit -from ..pose import Pose -from ..bullet_world import BulletWorld +from pycram.datastructures.pose import Pose +from pycram.world import World from tf2_msgs.msg import TFMessage class TFBroadcaster: """ - Broadcaster that publishes TF frames for every object in the BulletWorld. + Broadcaster that publishes TF frames for every object in the World. """ def __init__(self, projection_namespace="simulated", odom_frame="odom", interval=0.1): """ @@ -21,7 +21,7 @@ def __init__(self, projection_namespace="simulated", odom_frame="odom", interval :param odom_frame: Name of the statically published odom frame :param interval: Interval at which the TFs should be published, in seconds """ - self.world = BulletWorld.current_bullet_world + self.world = World.current_world self.tf_static_publisher = rospy.Publisher("/tf_static", TFMessage, queue_size=10) self.tf_publisher = rospy.Publisher("/tf", TFMessage, queue_size=10) @@ -39,7 +39,7 @@ def __init__(self, projection_namespace="simulated", odom_frame="odom", interval def update(self): """ - Updates the TFs for the static odom frame and all objects currently in the BulletWorld. + Updates the TFs for the static odom frame and all objects currently in the World. """ # Update static odom self._update_static_odom() @@ -48,13 +48,13 @@ def update(self): def _update_objects(self) -> None: """ - Publishes the current pose of all objects in the BulletWorld. As well as the poses of all links of these objects. + Publishes the current pose of all objects in the World. As well as the poses of all links of these objects. """ for obj in self.world.objects: pose = obj.get_pose() pose.header.stamp = rospy.Time.now() self._publish_pose(obj.tf_frame, pose) - for link in obj.links.keys(): + for link in obj.link_name_to_id.keys(): link_pose = obj.get_link_pose(link) link_pose.header.stamp = rospy.Time.now() self._publish_pose(obj.get_link_tf_frame(link), link_pose) @@ -89,7 +89,7 @@ def _publish_pose(self, child_frame_id: str, pose: Pose, static=False) -> None: def _publish(self) -> None: """ - Constantly publishes the positions of all objects in the BulletWorld. + Constantly publishes the positions of all objects in the World. """ while not self.kill_event.is_set(): self.update() diff --git a/src/pycram/ros/viz_marker_publisher.py b/src/pycram/ros/viz_marker_publisher.py index 52bfe879c..fc33f5f6e 100644 --- a/src/pycram/ros/viz_marker_publisher.py +++ b/src/pycram/ros/viz_marker_publisher.py @@ -5,22 +5,22 @@ from geometry_msgs.msg import Vector3 from std_msgs.msg import ColorRGBA -from pycram.bullet_world import BulletWorld, Object +from pycram.world import World from visualization_msgs.msg import MarkerArray, Marker import rospy -import urdf_parser_py -from tf.transformations import quaternion_from_euler -from pycram.pose import Transform +from pycram.datastructures.pose import Transform +from pycram.datastructures.dataclasses import MeshVisualShape, CylinderVisualShape, BoxVisualShape, SphereVisualShape class VizMarkerPublisher: """ - Publishes an Array of visualization marker which represent the situation in the Bullet World + Publishes an Array of visualization marker which represent the situation in the World """ + def __init__(self, topic_name="/pycram/viz_marker", interval=0.1): """ - The Publisher creates an Array of Visualization marker with a Marker for each link of each Object in the Bullet + The Publisher creates an Array of Visualization marker with a Marker for each link of each Object in the World. This Array is published with a rate of interval. :param topic_name: The name of the topic to which the Visualization Marker should be published. @@ -33,8 +33,9 @@ def __init__(self, topic_name="/pycram/viz_marker", interval=0.1): self.thread = threading.Thread(target=self._publish) self.kill_event = threading.Event() - self.thread.start() + self.main_world = World.current_world if not World.current_world.is_prospection_world else World.current_world.world_sync.world + self.thread.start() atexit.register(self._stop_publishing) def _publish(self) -> None: @@ -56,46 +57,45 @@ def _make_marker_array(self) -> MarkerArray: :return: An Array of Visualization Marker """ marker_array = MarkerArray() - for obj in BulletWorld.current_bullet_world.objects: + for obj in self.main_world.objects: if obj.name == "floor": continue - for link in obj.links.keys(): - geom = obj.link_to_geometry[link] + for link in obj.link_name_to_id.keys(): + geom = obj.get_link_geometry(link) if not geom: continue msg = Marker() msg.header.frame_id = "map" msg.ns = obj.name - msg.id = obj.links[link] + msg.id = obj.link_name_to_id[link] msg.type = Marker.MESH_RESOURCE msg.action = Marker.ADD - link_pose = obj.get_link_pose(link).to_transform(link) - if obj.urdf_object.link_map[link].collision.origin: - link_origin = Transform(obj.urdf_object.link_map[link].collision.origin.xyz, - list(quaternion_from_euler(*obj.urdf_object.link_map[link].collision.origin.rpy))) + link_pose = obj.get_link_transform(link) + if obj.get_link_origin(link) is not None: + link_origin = obj.get_link_origin_transform(link) else: link_origin = Transform() link_pose_with_origin = link_pose * link_origin msg.pose = link_pose_with_origin.to_pose().pose - color = [1, 1, 1, 1] if obj.links[link] == -1 else obj.get_color(link) + color = [1, 1, 1, 1] if obj.link_name_to_id[link] == -1 else obj.get_link_color(link).get_rgba() msg.color = ColorRGBA(*color) msg.lifetime = rospy.Duration(1) - if type(geom) == urdf_parser_py.urdf.Mesh: + if isinstance(geom, MeshVisualShape): msg.type = Marker.MESH_RESOURCE - msg.mesh_resource = "file://" + geom.filename + msg.mesh_resource = "file://" + geom.file_name msg.scale = Vector3(1, 1, 1) msg.mesh_use_embedded_materials = True - elif type(geom) == urdf_parser_py.urdf.Cylinder: + elif isinstance(geom, CylinderVisualShape): msg.type = Marker.CYLINDER msg.scale = Vector3(geom.radius * 2, geom.radius * 2, geom.length) - elif type(geom) == urdf_parser_py.urdf.Box: + elif isinstance(geom, BoxVisualShape): msg.type = Marker.CUBE msg.scale = Vector3(*geom.size) - elif type(geom) == urdf_parser_py.urdf.Sphere: - msg.type == Marker.SPHERE + elif isinstance(geom, SphereVisualShape): + msg.type = Marker.SPHERE msg.scale = Vector3(geom.radius * 2, geom.radius * 2, geom.radius * 2) marker_array.markers.append(msg) @@ -107,4 +107,3 @@ def _stop_publishing(self) -> None: """ self.kill_event.set() self.thread.join() - diff --git a/src/pycram/task.py b/src/pycram/task.py index 9d7113196..d26d63d11 100644 --- a/src/pycram/task.py +++ b/src/pycram/task.py @@ -3,118 +3,86 @@ # used for delayed evaluation of typing until python 3.11 becomes mainstream from __future__ import annotations +from typing_extensions import TYPE_CHECKING + import datetime import inspect import json import logging -from typing import List, Dict, Optional, Callable, Any +from typing_extensions import List, Dict, Optional, Callable import anytree -import pybullet import sqlalchemy.orm.session import tqdm -from .bullet_world import BulletWorld -from .orm.task import (Code as ORMCode, TaskTreeNode as ORMTaskTreeNode) +from .world import World +from .orm.task import TaskTreeNode as ORMTaskTreeNode from .orm.base import ProcessMetaData from .plan_failures import PlanFailure -from .language import Code -from .enums import TaskStatus - - -class TaskCode(Code): - def __str__(self) -> str: - return "%s(%s)" % ( - self.function.__name__, ", ".join(["%s, " % (str(value.__class__).split(".")[-2]) for value in - self.kwargs.values()])) - - def __eq__(self, other): - return isinstance(other, Code) and other.function.__name__ == self.function.__name__ \ - and other.kwargs == self.kwargs - - def to_json(self) -> Dict: - """Create a dictionary that can be json serialized.""" - return {"function": self.function.__name__, "kwargs": self.kwargs_to_json()} - - def kwargs_to_json(self): - """Try to parse the keyword arguments to json. Checks if the objects given as arguments can be serialized - as standard object or have a to_json method. If not they are skipped. """ - result = dict() - for keyword, argument in self.kwargs.items(): - to_json_method = getattr(argument, 'to_json', None) - - if to_json_method: - result[keyword] = argument.to_json() - - else: - try: - argument_ = json.loads(json.dumps(argument)) - result[keyword] = argument_ - except (TypeError, OverflowError): - logging.warning("Object of type %s cannot be JSON serialized. Skipping..." % type(argument)) - - return result +from .datastructures.enums import TaskStatus +from .datastructures.dataclasses import Color - def to_sql(self) -> ORMCode: - return ORMCode(self.function.__name__) +if TYPE_CHECKING: + from .designators.actions import Action - def insert(self, session: sqlalchemy.orm.session.Session) -> ORMCode: - code = self.to_sql() - # set foreign key to designator if present - self_ = self.kwargs.get("self") +class NoOperation: - if self_ and getattr(self_, "insert", None): - designator = self_.insert(session) - code.designator_id = designator.id + def perform(self): + ... - # get and set metadata - metadata = ProcessMetaData().insert(session) - code.process_metadata_id = metadata.id - - session.add(code) - session.commit() - return code + def __repr__(self): + return "NoOperation" -class NoOperation(TaskCode): +class TaskTreeNode(anytree.NodeMixin): """ - Convenience class that represents no operation as code. + TaskTreeNode represents one function that was called during a pycram plan. + Additionally, meta information is stored. """ - def __init__(self): - # default no operation - def no_operation(): return None + action: Optional[Action] + """ + The action and that is performed or None if nothing was performed + """ - # initialize a code block that does nothing - super().__init__(no_operation) + status: TaskStatus + """ + The status of the node from the TaskStatus enum. + """ + start_time: Optional[datetime.datetime] + """ + The starting time of the function, optional + """ -class TaskTreeNode(anytree.NodeMixin): - """TaskTreeNode represents one function that was called during a pycram plan. - Additionally, meta information is stored. + end_time: Optional[datetime.datetime] + """ + The ending time of the function, optional + """ - :ivar code: The function that was executed as Code object. - :ivar status: The status of the node from the TaskStatus enum. - :ivar start_time: The starting time of the function, optional - :ivar end_time: The ending time of the function, optional - :ivar reason: The reason why this task failed, optional + """ + The reason why this task failed, optional """ - def __init__(self, code: TaskCode = NoOperation(), parent: Optional[TaskTreeNode] = None, + def __init__(self, action: Optional[Action] = NoOperation(), parent: Optional[TaskTreeNode] = None, children: Optional[List[TaskTreeNode]] = None, reason: Optional[Exception] = None): """ Create a TaskTreeNode - :param code: The function and its arguments that got called as TaskCode object, defaults to NoOperation() + :param action: The action and that is performed, defaults to None :param parent: The parent function of this function. None if this the parent, optional :param children: An iterable of TaskTreeNode with the ordered children, optional """ super().__init__() - self.code: TaskCode = code - self.status: TaskStatus = TaskStatus.CREATED - self.start_time: Optional[datetime.datetime] = None - self.end_time: Optional[datetime.datetime] = None + + if action is None: + action = NoOperation() + + self.action = action + self.status = TaskStatus.CREATED + self.start_time = None + self.end_time = None self.parent = parent self.reason: Optional[Exception] = reason @@ -125,24 +93,15 @@ def __init__(self, code: TaskCode = NoOperation(), parent: Optional[TaskTreeNode def name(self): return str(self) - def to_json(self): - return {"code": self.code.to_json(), - "status": self.status.name, - "start_time": self.start_time.isoformat() if self.start_time else None, - "end_time": self.end_time.isoformat() if self.end_time else None, - "id": id(self), - "parent_id": id(self.parent) if self.parent else None - } - def __str__(self): return "Code: %s \n " \ - "start_time: %s \n " \ "Status: %s \n " \ + "start_time: %s \n " \ "end_time: %s \n " \ - "" % (str(self.code), self.start_time, self.status, self.end_time) + "" % (str(self.action), self.start_time, self.status, self.end_time) def __repr__(self): - return str(self.code) + return str(self.action.__class__.__name__) def __len__(self): """Get the number of nodes that are in this subtree.""" @@ -159,18 +118,17 @@ def to_sql(self) -> ORMTaskTreeNode: else: reason = None - return ORMTaskTreeNode(None, self.start_time, self.end_time, self.status.name, - reason, id(self.parent) if self.parent else None) + return ORMTaskTreeNode(self.start_time, self.end_time, self.status.name, reason) def insert(self, session: sqlalchemy.orm.session.Session, recursive: bool = True, - parent_id: Optional[int] = None, use_progress_bar: bool = True, + parent: Optional[TaskTreeNode] = None, use_progress_bar: bool = True, progress_bar: Optional[tqdm.tqdm] = None) -> ORMTaskTreeNode: """ Insert this node into the database. :param session: The current session with the database. :param recursive: Rather if the entire tree should be inserted or just this node, defaults to True - :param parent_id: The primary key of the parent node, defaults to None + :param parent: The parent node, defaults to None :param use_progress_bar: Rather to use a progressbar or not :param progress_bar: The progressbar to update. If a progress bar is desired and this is None, a new one will be created. @@ -182,32 +140,40 @@ def insert(self, session: sqlalchemy.orm.session.Session, recursive: bool = True progress_bar = tqdm.tqdm(desc="Inserting TaskTree into database", leave=True, position=0, total=len(self) if recursive else 1) - # insert code - code = self.code.insert(session) - # convert self to orm object node = self.to_sql() - node.code_id = code.id + + # insert action if possible + if getattr(self.action, "insert", None): + action = self.action.insert(session) + node.action = action + else: + action = None + node.action = None # get and set metadata metadata = ProcessMetaData().insert(session) - node.process_metadata_id = metadata.id + node.process_metadata = metadata - # set parent to id from constructor - node.parent_id = parent_id + # set node parent + node.parent = parent - # add the node to database to retrieve the new id + # add the node to the session; note that the instance is not yet committed to the db, but rather in a + # pending state session.add(node) - session.commit() if progress_bar: progress_bar.update() # if recursive, insert all children if recursive: - [child.insert(session, parent_id=node.id, use_progress_bar=use_progress_bar, progress_bar=progress_bar) + [child.insert(session, parent=node, use_progress_bar=use_progress_bar, progress_bar=progress_bar) for child in self.children] + # once recursion is done and the root node is reached again, commit the session to the database + if self.parent is None: + session.commit() + return node @@ -215,18 +181,16 @@ class SimulatedTaskTree: """TaskTree for execution in a 'new' simulation.""" def __enter__(self): - """At the beginning of a with statement the current task tree and bullet world will be suspended and remembered. + """At the beginning of a with statement the current task tree and world will be suspended and remembered. Fresh structures are then available inside the with statement.""" global task_tree - def simulation(): return None - self.suspended_tree = task_tree - self.world_state, self.objects2attached = BulletWorld.current_bullet_world.save_state() - self.simulated_root = TaskTreeNode(code=TaskCode(simulation)) + self.world_state = World.current_world.save_state() + self.simulated_root = TaskTreeNode() task_tree = self.simulated_root - pybullet.addUserDebugText("Simulating...", [0, 0, 1.75], textColorRGB=[0, 0, 0], - parentObjectUniqueId=1, lifeTime=0) + World.current_world.add_text("Simulating...", [0, 0, 1.75], color=Color.from_rgb([0, 0, 0]), + parent_object_id=1) return self def __exit__(self, exc_type, exc_val, exc_tb): @@ -235,8 +199,8 @@ def __exit__(self, exc_type, exc_val, exc_tb): """ global task_tree task_tree = self.suspended_tree - BulletWorld.current_bullet_world.restore_state(self.world_state, self.objects2attached) - pybullet.removeAllUserDebugItems() + World.current_world.restore_state(self.world_state) + World.current_world.remove_text() task_tree: Optional[TaskTreeNode] = None @@ -248,7 +212,7 @@ def reset_tree() -> None: Reset the current task tree to an empty root (NoOperation) node. """ global task_tree - task_tree = TaskTreeNode(NoOperation()) + task_tree = TaskTreeNode() task_tree.start_time = datetime.datetime.now() task_tree.status = TaskStatus.RUNNING @@ -257,7 +221,8 @@ def reset_tree() -> None: def with_tree(fun: Callable) -> Callable: - """Decorator that records the function name, arguments and execution metadata in the task tree. + """ + Decorator that records the function name, arguments and execution metadata in the task tree. :param fun: The function to record the data from. """ @@ -267,16 +232,20 @@ def handle_tree(*args, **kwargs): # get the task tree global task_tree - # create the code object that gets executed - code = TaskCode(fun, inspect.getcallargs(fun, *args, **kwargs)) + # parse keyword arguments + keyword_arguments = inspect.getcallargs(fun, *args, **kwargs) + + # try to get self object since this represents the action object + action = keyword_arguments.get("self", None) - task_tree = TaskTreeNode(code, parent=task_tree) + # create the task tree node + task_tree = TaskTreeNode(action, parent=task_tree) # Try to execute the task try: task_tree.status = TaskStatus.CREATED task_tree.start_time = datetime.datetime.now() - result = task_tree.code.execute() + result = fun(*args, **kwargs) # if it succeeded set the flag task_tree.status = TaskStatus.SUCCEEDED @@ -285,7 +254,7 @@ def handle_tree(*args, **kwargs): except PlanFailure as e: # log the error and set the flag - logging.exception("Task execution failed at %s. Reason %s" % (str(task_tree.code), e)) + logging.exception("Task execution failed at %s. Reason %s" % (repr(task_tree), e)) task_tree.reason = e task_tree.status = TaskStatus.FAILED raise e diff --git a/src/pycram/world.py b/src/pycram/world.py new file mode 100644 index 000000000..a1d64e65a --- /dev/null +++ b/src/pycram/world.py @@ -0,0 +1,1159 @@ +# used for delayed evaluation of typing until python 3.11 becomes mainstream +from __future__ import annotations + +import os +import threading +import time +from abc import ABC, abstractmethod +from copy import copy +from queue import Queue + +import numpy as np +import rospy +from geometry_msgs.msg import Point +from typing_extensions import List, Optional, Dict, Tuple, Callable, TYPE_CHECKING +from typing_extensions import Union + +from .cache_manager import CacheManager +from .datastructures.enums import JointType, ObjectType, WorldMode +from .world_concepts.event import Event +from .local_transformer import LocalTransformer +from .datastructures.pose import Pose, Transform +from .world_concepts.constraints import Constraint +from .datastructures.dataclasses import (Color, AxisAlignedBoundingBox, CollisionCallbacks, + MultiBody, VisualShape, BoxVisualShape, CylinderVisualShape, SphereVisualShape, + CapsuleVisualShape, PlaneVisualShape, MeshVisualShape, + ObjectState, State, WorldState) + +if TYPE_CHECKING: + from .world_concepts.world_object import Object + from .description import Link, Joint + + +class StateEntity: + """ + The StateEntity class is used to store the state of an object or the physics simulator. This is used to save and + restore the state of the World. + """ + + def __init__(self): + self._saved_states: Dict[int, State] = {} + + @property + def saved_states(self) -> Dict[int, State]: + """ + Returns the saved states of this entity. + """ + return self._saved_states + + def save_state(self, state_id: int) -> int: + """ + Saves the state of this entity with the given state id. + + :param state_id: The unique id of the state. + """ + self._saved_states[state_id] = self.current_state + return state_id + + @property + @abstractmethod + def current_state(self) -> State: + """ + Returns the current state of this entity. + + :return: The current state of this entity. + """ + pass + + @current_state.setter + @abstractmethod + def current_state(self, state: State) -> None: + """ + Sets the current state of this entity. + + :param state: The new state of this entity. + """ + pass + + def restore_state(self, state_id: int) -> None: + """ + Restores the state of this entity from a saved state using the given state id. + + :param state_id: The unique id of the state. + """ + self.current_state = self.saved_states[state_id] + + def remove_saved_states(self) -> None: + """ + Removes all saved states of this entity. + """ + self._saved_states = {} + + +class WorldEntity(StateEntity, ABC): + """ + A data class that represents an entity of the world, such as an object or a link. + """ + + def __init__(self, _id: int, world: Optional[World] = None): + StateEntity.__init__(self) + self.id = _id + self.world: World = world if world is not None else World.current_world + + +class World(StateEntity, ABC): + """ + The World Class represents the physics Simulation and belief state, it is the main interface for reasoning about + the World. This is implemented as a singleton, the current World can be accessed via the static variable + current_world which is managed by the World class itself. + """ + + simulation_frequency: float + """ + Global reference for the simulation frequency (Hz), used in calculating the equivalent real time in the simulation. + """ + + current_world: Optional[World] = None + """ + Global reference to the currently used World, usually this is the + graphical one. However, if you are inside a UseProspectionWorld() environment the current_world points to the + prospection world. In this way you can comfortably use the current_world, which should point towards the World + used at the moment. + """ + + robot: Optional[Object] = None + """ + Global reference to the spawned Object that represents the robot. The robot is identified by checking the name in + the URDF with the name of the URDF on the parameter server. + """ + + data_directory: List[str] = [os.path.join(os.path.dirname(__file__), '..', '..', 'resources')] + """ + Global reference for the data directories, this is used to search for the description files of the robot + and the objects. + """ + + cache_dir = data_directory[0] + '/cached/' + """ + Global reference for the cache directory, this is used to cache the description files of the robot and the objects. + """ + + def __init__(self, mode: WorldMode, is_prospection_world: bool, simulation_frequency: float): + """ + Creates a new simulation, the mode decides if the simulation should be a rendered window or just run in the + background. There can only be one rendered simulation. + The World object also initializes the Events for attachment, detachment and for manipulating the world. + + :param mode: Can either be "GUI" for rendered window or "DIRECT" for non-rendered. The default parameter is "GUI" + :param is_prospection_world: For internal usage, decides if this World should be used as a prospection world. + """ + + StateEntity.__init__(self) + + if World.current_world is None: + World.current_world = self + World.simulation_frequency = simulation_frequency + + self.cache_manager = CacheManager(self.cache_dir, self.data_directory) + + self.id: Optional[int] = -1 + # This is used to connect to the physics server (allows multiple clients) + + self._init_world(mode) + + self.is_prospection_world: bool = is_prospection_world + self._init_and_sync_prospection_world() + + self.local_transformer = LocalTransformer() + self._update_local_transformer_worlds() + + self.objects: List[Object] = [] + # List of all Objects in the World + + + + self.mode: WorldMode = mode + # The mode of the simulation, can be "GUI" or "DIRECT" + + self.coll_callbacks: Dict[Tuple[Object, Object], CollisionCallbacks] = {} + + self._init_events() + + self._current_state: Optional[WorldState] = None + + @abstractmethod + def _init_world(self, mode: WorldMode): + """ + Initializes the physics simulation. + """ + raise NotImplementedError + + def _init_events(self): + """ + Initializes dynamic events that can be used to react to changes in the World. + """ + self.detachment_event: Event = Event() + self.attachment_event: Event = Event() + self.manipulation_event: Event = Event() + + def _init_and_sync_prospection_world(self): + """ + Initializes the prospection world and the synchronization between the main and the prospection world. + """ + self._init_prospection_world() + self._sync_prospection_world() + + def _update_local_transformer_worlds(self): + """ + Updates the local transformer worlds with the current world and prospection world. + """ + self.local_transformer.world = self + self.local_transformer.prospection_world = self.prospection_world + + def _init_prospection_world(self): + """ + Initializes the prospection world, if this is a prospection world itself it will not create another prospection, + world, but instead set the prospection world to None, else it will create a prospection world. + """ + if self.is_prospection_world: # then no need to add another prospection world + self.prospection_world = None + else: + self.prospection_world: World = self.__class__(WorldMode.DIRECT, + True, + World.simulation_frequency) + + def _sync_prospection_world(self): + """ + Synchronizes the prospection world with the main world, this means that every object in the main world will be + added to the prospection world and vice versa. + """ + if self.is_prospection_world: # then no need to add another prospection world + self.world_sync = None + else: + self.world_sync: WorldSync = WorldSync(self, self.prospection_world) + self.world_sync.start() + + def update_cache_dir_with_object(self, path: str, ignore_cached_files: bool, + obj: Object) -> str: + """ + Updates the cache directory with the given object. + + :param path: The path to the object. + :param ignore_cached_files: If the cached files should be ignored. + :param obj: The object to be added to the cache directory. + """ + return self.cache_manager.update_cache_dir_with_object(path, ignore_cached_files, obj.description, obj.name) + + @property + def simulation_time_step(self): + """ + The time step of the simulation in seconds. + """ + return 1 / World.simulation_frequency + + @abstractmethod + def load_object_and_get_id(self, path: Optional[str] = None, pose: Optional[Pose] = None) -> int: + """ + Loads a description file (e.g. URDF) at the given pose and returns the id of the loaded object. + + :param path: The path to the description file, if None the description file is assumed to be already loaded. + :param pose: The pose at which the object should be loaded. + :return: The id of the loaded object. + """ + pass + + def get_object_by_name(self, name: str) -> List[Object]: + """ + Returns a list of all Objects in this World with the same name as the given one. + + :param name: The name of the returned Objects. + :return: A list of all Objects with the name 'name'. + """ + return list(filter(lambda obj: obj.name == name, self.objects))[0] + + def get_object_by_type(self, obj_type: ObjectType) -> List[Object]: + """ + Returns a list of all Objects which have the type 'obj_type'. + + :param obj_type: The type of the returned Objects. + :return: A list of all Objects that have the type 'obj_type'. + """ + return list(filter(lambda obj: obj.obj_type == obj_type, self.objects)) + + def get_object_by_id(self, obj_id: int) -> Object: + """ + Returns the single Object that has the unique id. + + :param obj_id: The unique id for which the Object should be returned. + :return: The Object with the id 'id'. + """ + return list(filter(lambda obj: obj.id == obj_id, self.objects))[0] + + @abstractmethod + def remove_object_from_simulator(self, obj: Object) -> None: + """ + Removes an object from the physics simulator. + + :param obj: The object to be removed. + """ + pass + + def remove_object(self, obj: Object) -> None: + """ + Removes this object from the current world. + For the object to be removed it has to be detached from all objects it + is currently attached to. After this is done a call to world remove object is done + to remove this Object from the simulation/world. + + :param obj: The object to be removed. + """ + obj.detach_all() + + self.objects.remove(obj) + + # This means the current world of the object is not the prospection world, since it + # has a reference to the prospection world + if self.prospection_world is not None: + self.world_sync.remove_obj_queue.put(obj) + self.world_sync.remove_obj_queue.join() + + self.remove_object_from_simulator(obj) + + if World.robot == obj: + World.robot = None + + def add_fixed_constraint(self, parent_link: Link, child_link: Link, + child_to_parent_transform: Transform) -> int: + """ + Creates a fixed joint constraint between the given parent and child links, + the joint frame will be at the origin of the child link frame, and would have the same orientation + as the child link frame. + + :param parent_link: The constrained link of the parent object. + :param child_link: The constrained link of the child object. + :param child_to_parent_transform: The transform from the child link frame to the parent link frame. + :return: The unique id of the created constraint. + """ + + constraint = Constraint(parent_link=parent_link, + child_link=child_link, + _type=JointType.FIXED, + axis_in_child_frame=Point(0, 0, 0), + constraint_to_parent=child_to_parent_transform, + child_to_constraint=Transform(frame=child_link.tf_frame) + ) + constraint_id = self.add_constraint(constraint) + return constraint_id + + @abstractmethod + def add_constraint(self, constraint: Constraint) -> int: + """ + Add a constraint between two objects links so that they become attached for example. + + :param constraint: The constraint data used to create the constraint. + """ + pass + + @abstractmethod + def remove_constraint(self, constraint_id) -> None: + """ + Remove a constraint by its ID. + + :param constraint_id: The unique id of the constraint to be removed. + """ + pass + + @abstractmethod + def get_joint_position(self, joint: Joint) -> float: + """ + Get the position of a joint of an articulated object + + :param joint: The joint to get the position for. + :return: The joint position as a float. + """ + pass + + @abstractmethod + def get_object_joint_names(self, obj: Object) -> List[str]: + """ + Returns the names of all joints of this object. + + :param obj: The object. + :return: A list of joint names. + """ + pass + + @abstractmethod + def get_link_pose(self, link: Link) -> Pose: + """ + Get the pose of a link of an articulated object with respect to the world frame. + + :param link: The link as a AbstractLink object. + :return: The pose of the link as a Pose object. + """ + pass + + @abstractmethod + def get_object_link_names(self, obj: Object) -> List[str]: + """ + Returns the names of all links of this object. + + :param obj: The object. + :return: A list of link names. + """ + pass + + def simulate(self, seconds: float, real_time: Optional[bool] = False) -> None: + """ + Simulates Physics in the World for a given amount of seconds. Usually this simulation is faster than real + time. By setting the 'real_time' parameter this simulation is slowed down such that the simulated time is equal + to real time. + + :param seconds: The amount of seconds that should be simulated. + :param real_time: If the simulation should happen in real time or faster. + """ + self.set_realtime(real_time) + for i in range(0, int(seconds * self.simulation_frequency)): + curr_time = rospy.Time.now() + self.step() + for objects, callbacks in self.coll_callbacks.items(): + contact_points = self.get_contact_points_between_two_objects(objects[0], objects[1]) + if contact_points != (): + callbacks.on_collision_cb() + elif callbacks.no_collision_cb is not None: + callbacks.no_collision_cb() + if real_time: + loop_time = rospy.Time.now() - curr_time + time_diff = self.simulation_time_step - loop_time.to_sec() + time.sleep(max(0, time_diff)) + self.update_all_objects_poses() + + def update_all_objects_poses(self) -> None: + """ + Updates the positions of all objects in the world. + """ + for obj in self.objects: + obj.update_pose() + + @abstractmethod + def get_object_pose(self, obj: Object) -> Pose: + """ + Get the pose of an object in the world frame from the current object pose in the simulator. + """ + pass + + @abstractmethod + def perform_collision_detection(self) -> None: + """ + Checks for collisions between all objects in the World and updates the contact points. + """ + pass + + @abstractmethod + def get_object_contact_points(self, obj: Object) -> List: + """ + Returns a list of contact points of this Object with all other Objects. + + :param obj: The object. + :return: A list of all contact points with other objects + """ + pass + + @abstractmethod + def get_contact_points_between_two_objects(self, obj1: Object, obj2: Object) -> List: + """ + Returns a list of contact points between obj1 and obj2. + + :param obj1: The first object. + :param obj2: The second object. + :return: A list of all contact points between the two objects. + """ + pass + + @abstractmethod + def reset_joint_position(self, joint: Joint, joint_position: float) -> None: + """ + Reset the joint position instantly without physics simulation + + :param joint: The joint to reset the position for. + :param joint_position: The new joint pose. + """ + pass + + @abstractmethod + def reset_object_base_pose(self, obj: Object, pose: Pose): + """ + Reset the world position and orientation of the base of the object instantaneously, + not through physics simulation. (x,y,z) position vector and (x,y,z,w) quaternion orientation. + + :param obj: The object. + :param pose: The new pose as a Pose object. + """ + pass + + @abstractmethod + def step(self): + """ + Step the world simulation using forward dynamics + """ + pass + + @abstractmethod + def set_link_color(self, link: Link, rgba_color: Color): + """ + Changes the rgba_color of a link of this object, the rgba_color has to be given as Color object. + + :param link: The link which should be colored. + :param rgba_color: The rgba_color as Color object with RGBA values between 0 and 1. + """ + pass + + @abstractmethod + def get_link_color(self, link: Link) -> Color: + """ + This method returns the rgba_color of this link. + + :param link: The link for which the rgba_color should be returned. + :return: The rgba_color as Color object with RGBA values between 0 and 1. + """ + pass + + @abstractmethod + def get_colors_of_object_links(self, obj: Object) -> Dict[str, Color]: + """ + Get the RGBA colors of each link in the object as a dictionary from link name to rgba_color. + + :param obj: The object + :return: A dictionary with link names as keys and a Color object for each link as value. + """ + pass + + @abstractmethod + def get_object_axis_aligned_bounding_box(self, obj: Object) -> AxisAlignedBoundingBox: + """ + Returns the axis aligned bounding box of this object. The return of this method are two points in + world coordinate frame which define a bounding box. + + :param obj: The object for which the bounding box should be returned. + :return: AxisAlignedBoundingBox object containing the min and max points of the bounding box. + """ + pass + + @abstractmethod + def get_link_axis_aligned_bounding_box(self, link: Link) -> AxisAlignedBoundingBox: + """ + Returns the axis aligned bounding box of the link. The return of this method are two points in + world coordinate frame which define a bounding box. + """ + pass + + @abstractmethod + def set_realtime(self, real_time: bool) -> None: + """ + Enables the real time simulation of Physics in the World. By default, this is disabled and Physics is only + simulated to reason about it. + + :param real_time: Whether the World should simulate Physics in real time. + """ + pass + + @abstractmethod + def set_gravity(self, gravity_vector: List[float]) -> None: + """ + Sets the gravity that is used in the World. By default, it is set to the gravity on earth ([0, 0, -9.8]). + Gravity is given as a vector in x,y,z. Gravity is only applied while simulating Physic. + + :param gravity_vector: The gravity vector that should be used in the World. + """ + pass + + def set_robot_if_not_set(self, robot: Object) -> None: + """ + Sets the robot if it is not set yet. + + :param robot: The Object reference to the Object representing the robot. + """ + if not self.robot_is_set(): + self.set_robot(robot) + + @staticmethod + def set_robot(robot: Union[Object, None]) -> None: + """ + Sets the global variable for the robot Object This should be set on spawning the robot. + + :param robot: The Object reference to the Object representing the robot. + """ + World.robot = robot + + @staticmethod + def robot_is_set() -> bool: + """ + Returns whether the robot has been set or not. + + :return: True if the robot has been set, False otherwise. + """ + return World.robot is not None + + def exit(self) -> None: + """ + Closes the World as well as the prospection world, also collects any other thread that is running. + """ + self.exit_prospection_world_if_exists() + self.disconnect_from_physics_server() + self.reset_robot() + self.join_threads() + if World.current_world == self: + World.current_world = None + + def exit_prospection_world_if_exists(self) -> None: + """ + Exits the prospection world if it exists. + """ + if self.prospection_world: + self.terminate_world_sync() + self.prospection_world.exit() + + @abstractmethod + def disconnect_from_physics_server(self) -> None: + """ + Disconnects the world from the physics server. + """ + pass + + def reset_current_world(self) -> None: + """ + Resets the pose of every object in the World to the pose it was spawned in and sets every joint to 0. + """ + for obj in self.objects: + obj.set_pose(obj.original_pose) + obj.set_joint_positions(dict(zip(list(obj.joint_names), [0] * len(obj.joint_names)))) + + def reset_robot(self) -> None: + """ + Sets the robot class variable to None. + """ + self.set_robot(None) + + @abstractmethod + def join_threads(self) -> None: + """ + Join any running threads. Useful for example when exiting the world. + """ + pass + + def terminate_world_sync(self) -> None: + """ + Terminates the world sync thread. + """ + self.world_sync.terminate = True + self.world_sync.join() + + def save_state(self, state_id: Optional[int] = None) -> int: + """ + Returns the id of the saved state of the World. The saved state contains the states of all the objects and + the state of the physics simulator. + + :return: A unique id of the state + """ + state_id = self.save_physics_simulator_state() + self.save_objects_state(state_id) + self._current_state = WorldState(state_id, self.object_states) + return super().save_state(state_id) + + @property + def current_state(self) -> WorldState: + if self._current_state is None: + self._current_state = WorldState(self.save_physics_simulator_state(), self.object_states) + return self._current_state + + @current_state.setter + def current_state(self, state: WorldState) -> None: + self.restore_physics_simulator_state(state.simulator_state_id) + self.object_states = state.object_states + + @property + def object_states(self) -> Dict[str, ObjectState]: + """ + Returns the states of all objects in the World. + + :return: A dictionary with the object id as key and the object state as value. + """ + return {obj.name: obj.current_state for obj in self.objects} + + @object_states.setter + def object_states(self, states: Dict[str, ObjectState]) -> None: + """ + Sets the states of all objects in the World. + """ + for obj_name, obj_state in states.items(): + self.get_object_by_name(obj_name).current_state = obj_state + + def save_objects_state(self, state_id: int) -> None: + """ + Saves the state of all objects in the World according to the given state using the unique state id. + + :param state_id: The unique id representing the state. + """ + for obj in self.objects: + obj.save_state(state_id) + + @abstractmethod + def save_physics_simulator_state(self) -> int: + """ + Saves the state of the physics simulator and returns the unique id of the state. + + :return: The unique id representing the state. + """ + pass + + @abstractmethod + def remove_physics_simulator_state(self, state_id: int) -> None: + """ + Removes the state of the physics simulator with the given id. + + :param state_id: The unique id representing the state. + """ + pass + + @abstractmethod + def restore_physics_simulator_state(self, state_id: int) -> None: + """ + Restores the objects and environment state in the physics simulator according to + the given state using the unique state id. + + :param state_id: The unique id representing the state. + """ + pass + + def get_images_for_target(self, + target_pose: Pose, + cam_pose: Pose, + size: Optional[int] = 256) -> List[np.ndarray]: + """ + Calculates the view and projection Matrix and returns 3 images: + + 1. An RGB image + 2. A depth image + 3. A segmentation Mask, the segmentation mask indicates for every pixel the visible Object + + :param target_pose: The pose to which the camera should point. + :param cam_pose: The pose of the camera. + :param size: The height and width of the images in pixels. + :return: A list containing an RGB and depth image as well as a segmentation mask, in this order. + """ + pass + + def register_two_objects_collision_callbacks(self, + object_a: Object, + object_b: Object, + on_collision_callback: Callable, + on_collision_removal_callback: Optional[Callable] = None) -> None: + """ + Registers callback methods for contact between two Objects. There can be a callback for when the two Objects + get in contact and, optionally, for when they are not in contact anymore. + + :param object_a: An object in the World + :param object_b: Another object in the World + :param on_collision_callback: A function that should be called if the objects are in contact + :param on_collision_removal_callback: A function that should be called if the objects are not in contact + """ + self.coll_callbacks[(object_a, object_b)] = CollisionCallbacks(on_collision_callback, + on_collision_removal_callback) + + @classmethod + def add_resource_path(cls, path: str) -> None: + """ + Adds a resource path in which the World will search for files. This resource directory is searched if an + Object is spawned only with a filename. + + :param path: A path in the filesystem in which to search for files. + """ + cls.data_directory.append(path) + + def get_prospection_object_for_object(self, obj: Object) -> Object: + """ + Returns the corresponding object from the prospection world for a given object in the main world. + If the given Object is already in the prospection world, it is returned. + + :param obj: The object for which the corresponding object in the prospection World should be found. + :return: The corresponding object in the prospection world. + """ + try: + return self.world_sync.object_mapping[obj] + except KeyError: + prospection_world = self if self.is_prospection_world else self.prospection_world + if obj in prospection_world.objects: + return obj + else: + raise ValueError( + f"There is no prospection object for the given object: {obj}, this could be the case if" + f" the object isn't anymore in the main (graphical) World" + f" or if the given object is already a prospection object. ") + + def get_object_for_prospection_object(self, prospection_object: Object) -> Object: + """ + Returns the corresponding object from the main World for a given + object in the prospection world. If the given object is not in the prospection + world an error will be raised. + + :param prospection_object: The object for which the corresponding object in the main World should be found. + :return: The object in the main World. + """ + object_map = self.world_sync.object_mapping + try: + return list(object_map.keys())[list(object_map.values()).index(prospection_object)] + except ValueError: + raise ValueError("The given object is not in the prospection world.") + + def reset_world(self, remove_saved_states=True) -> None: + """ + Resets the World to the state it was first spawned in. + All attached objects will be detached, all joints will be set to the + default position of 0 and all objects will be set to the position and + orientation in which they were spawned. + + :param remove_saved_states: If the saved states should be removed. + """ + + if remove_saved_states: + self.remove_saved_states() + + for obj in self.objects: + obj.reset(remove_saved_states) + + def remove_saved_states(self) -> None: + """ + Removes all saved states of the World. + """ + for state_id in self.saved_states: + self.remove_physics_simulator_state(state_id) + super().remove_saved_states() + + def update_transforms_for_objects_in_current_world(self) -> None: + """ + Updates transformations for all objects that are currently in :py:attr:`~pycram.world.World.current_world`. + """ + curr_time = rospy.Time.now() + for obj in list(self.current_world.objects): + obj.update_link_transforms(curr_time) + + @abstractmethod + def ray_test(self, from_position: List[float], to_position: List[float]) -> int: + """ Cast a ray and return the first object hit, if any. + + :param from_position: The starting position of the ray in Cartesian world coordinates. + :param to_position: The ending position of the ray in Cartesian world coordinates. + :return: The object id of the first object hit, or -1 if no object was hit. + """ + pass + + @abstractmethod + def ray_test_batch(self, from_positions: List[List[float]], to_positions: List[List[float]], + num_threads: int = 1) -> List[int]: + """ Cast a batch of rays and return the result for each of the rays (first object hit, if any. or -1) + Takes optional argument num_threads to specify the number of threads to use + to compute the ray intersections for the batch. Specify 0 to let simulator decide, 1 (default) for single + core execution, 2 or more to select the number of threads to use. + + :param from_positions: The starting positions of the rays in Cartesian world coordinates. + :param to_positions: The ending positions of the rays in Cartesian world coordinates. + :param num_threads: The number of threads to use to compute the ray intersections for the batch. + """ + pass + + def create_visual_shape(self, visual_shape: VisualShape) -> int: + """ + Creates a visual shape in the physics simulator and returns the unique id of the created shape. + + :param visual_shape: The visual shape to be created, uses the VisualShape dataclass defined in world_dataclasses + :return: The unique id of the created shape. + """ + raise NotImplementedError + + def create_multi_body_from_visual_shapes(self, visual_shape_ids: List[int], pose: Pose) -> int: + """ + Creates a multi body from visual shapes in the physics simulator and returns the unique id of the created + multi body. + + :param visual_shape_ids: The ids of the visual shapes that should be used to create the multi body. + :param pose: The pose of the origin of the multi body relative to the world frame. + :return: The unique id of the created multi body. + """ + # Dummy parameter since these are needed to spawn visual shapes as a multibody. + num_of_shapes = len(visual_shape_ids) + link_poses = [Pose() for _ in range(num_of_shapes)] + link_masses = [1.0 for _ in range(num_of_shapes)] + link_parent = [0 for _ in range(num_of_shapes)] + link_joints = [JointType.FIXED.value for _ in range(num_of_shapes)] + link_collision = [-1 for _ in range(num_of_shapes)] + link_joint_axis = [Point(1, 0, 0) for _ in range(num_of_shapes)] + + multi_body = MultiBody(base_visual_shape_index=-1, base_pose=pose, + link_visual_shape_indices=visual_shape_ids, link_poses=link_poses, + link_masses=link_masses, + link_inertial_frame_poses=link_poses, + link_parent_indices=link_parent, link_joint_types=link_joints, + link_joint_axis=link_joint_axis, + link_collision_shape_indices=link_collision) + return self.create_multi_body(multi_body) + + def create_multi_body(self, multi_body: MultiBody) -> int: + """ + Creates a multi body in the physics simulator and returns the unique id of the created multi body. The multibody + is created by joining multiple links/shapes together with joints. + + :param multi_body: The multi body to be created, uses the MultiBody dataclass defined in world_dataclasses. + :return: The unique id of the created multi body. + """ + raise NotImplementedError + + def create_box_visual_shape(self, shape_data: BoxVisualShape) -> int: + """ + Creates a box visual shape in the physics simulator and returns the unique id of the created shape. + + :param shape_data: The parameters that define the box visual shape to be created, uses the BoxVisualShape dataclass defined in world_dataclasses. + :return: The unique id of the created shape. + """ + raise NotImplementedError + + def create_cylinder_visual_shape(self, shape_data: CylinderVisualShape) -> int: + """ + Creates a cylinder visual shape in the physics simulator and returns the unique id of the created shape. + + :param shape_data: The parameters that define the cylinder visual shape to be created, uses the CylinderVisualShape dataclass defined in world_dataclasses. + :return: The unique id of the created shape. + """ + raise NotImplementedError + + def create_sphere_visual_shape(self, shape_data: SphereVisualShape) -> int: + """ + Creates a sphere visual shape in the physics simulator and returns the unique id of the created shape. + + :param shape_data: The parameters that define the sphere visual shape to be created, uses the SphereVisualShape dataclass defined in world_dataclasses. + :return: The unique id of the created shape. + """ + raise NotImplementedError + + def create_capsule_visual_shape(self, shape_data: CapsuleVisualShape) -> int: + """ + Creates a capsule visual shape in the physics simulator and returns the unique id of the created shape. + + :param shape_data: The parameters that define the capsule visual shape to be created, uses the CapsuleVisualShape dataclass defined in world_dataclasses. + :return: The unique id of the created shape. + """ + raise NotImplementedError + + def create_plane_visual_shape(self, shape_data: PlaneVisualShape) -> int: + """ + Creates a plane visual shape in the physics simulator and returns the unique id of the created shape. + + :param shape_data: The parameters that define the plane visual shape to be created, uses the PlaneVisualShape dataclass defined in world_dataclasses. + :return: The unique id of the created shape. + """ + raise NotImplementedError + + def create_mesh_visual_shape(self, shape_data: MeshVisualShape) -> int: + """ + Creates a mesh visual shape in the physics simulator and returns the unique id of the created shape. + + :param shape_data: The parameters that define the mesh visual shape to be created, + uses the MeshVisualShape dataclass defined in world_dataclasses. + :return: The unique id of the created shape. + """ + raise NotImplementedError + + def add_text(self, text: str, position: List[float], orientation: Optional[List[float]] = None, size: float = 0.1, + color: Optional[Color] = Color(), life_time: Optional[float] = 0, + parent_object_id: Optional[int] = None, parent_link_id: Optional[int] = None) -> int: + """ + Adds text to the world. + + :param text: The text to be added. + :param position: The position of the text in the world. + :param orientation: By default, debug text will always face the camera, automatically rotation. By specifying a text orientation (quaternion), the orientation will be fixed in world space or local space (when parent is specified). + :param size: The size of the text. + :param color: The color of the text. + :param life_time: The lifetime in seconds of the text to remain in the world, if 0 the text will remain in the world until it is removed manually. + :param parent_object_id: The id of the object to which the text should be attached. + :param parent_link_id: The id of the link to which the text should be attached. + :return: The id of the added text. + """ + raise NotImplementedError + + def remove_text(self, text_id: Optional[int] = None) -> None: + """ + Removes text from the world using the given id. if no id is given all text will be removed. + + :param text_id: The id of the text to be removed. + """ + raise NotImplementedError + + def enable_joint_force_torque_sensor(self, obj: Object, fts_joint_idx: int) -> None: + """ + You can enable a joint force/torque sensor in each joint. Once enabled, if you perform + a simulation step, the get_joint_reaction_force_torque will report the joint reaction forces in + the fixed degrees of freedom: a fixed joint will measure all 6DOF joint forces/torques. + A revolute/hinge joint force/torque sensor will measure 5DOF reaction forces along all axis except + the hinge axis. The applied force by a joint motor is available through get_applied_joint_motor_torque. + + :param obj: The object in which the joint is located. + :param fts_joint_idx: The index of the joint for which the force torque sensor should be enabled. + """ + raise NotImplementedError + + def disable_joint_force_torque_sensor(self, obj: Object, joint_id: int) -> None: + """ + Disables the force torque sensor of a joint. + + :param obj: The object in which the joint is located. + :param joint_id: The id of the joint for which the force torque sensor should be disabled. + """ + raise NotImplementedError + + def get_joint_reaction_force_torque(self, obj: Object, joint_id: int) -> List[float]: + """ + Returns the joint reaction forces and torques of the specified joint. + + :param obj: The object in which the joint is located. + :param joint_id: The id of the joint for which the force torque should be returned. + :return: The joint reaction forces and torques of the specified joint. + """ + raise NotImplementedError + + def get_applied_joint_motor_torque(self, obj: Object, joint_id: int) -> float: + """ + Returns the applied torque by a joint motor. + + :param obj: The object in which the joint is located. + :param joint_id: The id of the joint for which the applied motor torque should be returned. + :return: The applied torque by a joint motor. + """ + raise NotImplementedError + + def __del__(self): + self.exit() + + +class UseProspectionWorld: + """ + An environment for using the prospection world, while in this environment the :py:attr:`~World.current_world` + variable will point to the prospection world. + + Example: + with UseProspectionWorld(): + NavigateAction.Action([[1, 0, 0], [0, 0, 0, 1]]).perform() + """ + + WAIT_TIME_FOR_ADDING_QUEUE = 20 + """ + The time in seconds to wait for the adding queue to be ready. + """ + + def __init__(self): + self.prev_world: Optional[World] = None + # The previous world is saved to restore it after the with block is exited. + + def __enter__(self): + """ + This method is called when entering the with block, it will set the current world to the prospection world + """ + if not World.current_world.is_prospection_world: + time.sleep(self.WAIT_TIME_FOR_ADDING_QUEUE * World.current_world.simulation_time_step) + # blocks until the adding queue is ready + World.current_world.world_sync.add_obj_queue.join() + + self.prev_world = World.current_world + World.current_world.world_sync.pause_sync = True + World.current_world = World.current_world.prospection_world + + def __exit__(self, *args): + """ + This method is called when exiting the with block, it will restore the previous world to be the current world. + """ + if self.prev_world is not None: + World.current_world = self.prev_world + World.current_world.world_sync.pause_sync = False + + +class WorldSync(threading.Thread): + """ + Synchronizes the state between the World and its prospection world. + Meaning the cartesian and joint position of everything in the prospection world will be + synchronized with the main World. + Adding and removing objects is done via queues, such that loading times of objects + in the prospection world does not affect the World. + The class provides the possibility to pause the synchronization, this can be used + if reasoning should be done in the prospection world. + """ + + def __init__(self, world: World, prospection_world: World): + threading.Thread.__init__(self) + self.world: World = world + self.prospection_world: World = prospection_world + self.prospection_world.world_sync = self + + self.terminate: bool = False + self.add_obj_queue: Queue = Queue() + self.remove_obj_queue: Queue = Queue() + self.pause_sync: bool = False + # Maps world to prospection world objects + self.object_mapping: Dict[Object, Object] = {} + self.equal_states = False + + def run(self, wait_time_as_n_simulation_steps: Optional[int] = 1): + """ + Main method of the synchronization, this thread runs in a loop until the + terminate flag is set. + While this loop runs it continuously checks the cartesian and joint position of + every object in the World and updates the corresponding object in the + prospection world. When there are entries in the adding or removing queue the corresponding objects will + be added or removed in the same iteration. + + :param wait_time_as_n_simulation_steps: The time in simulation steps to wait between each iteration of + the syncing loop. + """ + while not self.terminate: + self.check_for_pause() + # self.equal_states = False + for i in range(self.add_obj_queue.qsize()): + obj = self.add_obj_queue.get() + # Maps the World object to the prospection world object + self.object_mapping[obj] = copy(obj) + self.add_obj_queue.task_done() + for i in range(self.remove_obj_queue.qsize()): + obj = self.remove_obj_queue.get() + # Get prospection world object reference from object mapping + prospection_obj = self.object_mapping[obj] + prospection_obj.remove() + del self.object_mapping[obj] + self.remove_obj_queue.task_done() + + for world_obj, prospection_obj in self.object_mapping.items(): + prospection_obj.current_state = world_obj.current_state + + self.check_for_pause() + # self.check_for_equal() + time.sleep(wait_time_as_n_simulation_steps * self.world.simulation_time_step) + + self.add_obj_queue.join() + self.remove_obj_queue.join() + + def check_for_pause(self) -> None: + """ + Checks if :py:attr:`~self.pause_sync` is true and sleeps this thread until it isn't anymore. + """ + while self.pause_sync: + time.sleep(0.1) + + def check_for_equal(self) -> bool: + """ + Checks if both Worlds have the same state, meaning all objects are in the same position. + This is currently not used, but might be used in the future if synchronization issues worsen. + + :return: True if both Worlds have the same state, False otherwise. + """ + eql = True + for obj, prospection_obj in self.object_mapping.items(): + eql = eql and obj.get_pose() == prospection_obj.get_pose() + self.equal_states = eql + return eql diff --git a/src/pycram/world_concepts/__init__.py b/src/pycram/world_concepts/__init__.py new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/src/pycram/world_concepts/__init__.py @@ -0,0 +1 @@ + diff --git a/src/pycram/world_concepts/constraints.py b/src/pycram/world_concepts/constraints.py new file mode 100644 index 000000000..aa41e3bdf --- /dev/null +++ b/src/pycram/world_concepts/constraints.py @@ -0,0 +1,281 @@ +from __future__ import annotations + +import numpy as np +from geometry_msgs.msg import Point +from typing_extensions import Union, List, Optional, TYPE_CHECKING + +from ..datastructures.enums import JointType +from ..datastructures.pose import Transform, Pose + +if TYPE_CHECKING: + from ..description import Link + + +class AbstractConstraint: + """ + Represents an abstract constraint concept, this could be used to create joints for example or any kind of constraint + between two links in the world. + """ + + def __init__(self, + parent_link: Link, + child_link: Link, + _type: JointType, + parent_to_constraint: Transform, + child_to_constraint: Transform): + self.parent_link: Link = parent_link + self.child_link: Link = child_link + self.type: JointType = _type + self.parent_to_constraint = parent_to_constraint + self.child_to_constraint = child_to_constraint + self._parent_to_child = None + + @property + def parent_to_child_transform(self) -> Union[Transform, None]: + if self._parent_to_child is None: + if self.parent_to_constraint is not None and self.child_to_constraint is not None: + self._parent_to_child = self.parent_to_constraint * self.child_to_constraint.invert() + return self._parent_to_child + + @parent_to_child_transform.setter + def parent_to_child_transform(self, transform: Transform) -> None: + self._parent_to_child = transform + + @property + def parent_object_id(self) -> int: + """ + Returns the id of the parent object of the constraint. + + :return: The id of the parent object of the constraint + """ + return self.parent_link.object_id + + @property + def child_object_id(self) -> int: + """ + Returns the id of the child object of the constraint. + + :return: The id of the child object of the constraint + """ + return self.child_link.object_id + + @property + def parent_link_id(self) -> int: + """ + Returns the id of the parent link of the constraint. + + :return: The id of the parent link of the constraint + """ + return self.parent_link.id + + @property + def child_link_id(self) -> int: + """ + Returns the id of the child link of the constraint. + + :return: The id of the child link of the constraint + """ + return self.child_link.id + + @property + def position_wrt_parent_as_list(self) -> List[float]: + """ + Returns the constraint frame pose with respect to the parent origin as a list. + + :return: The constraint frame pose with respect to the parent origin as a list + """ + return self.pose_wrt_parent.position_as_list() + + @property + def orientation_wrt_parent_as_list(self) -> List[float]: + """ + Returns the constraint frame orientation with respect to the parent origin as a list. + + :return: The constraint frame orientation with respect to the parent origin as a list + """ + return self.pose_wrt_parent.orientation_as_list() + + @property + def pose_wrt_parent(self) -> Pose: + """ + Returns the joint frame pose with respect to the parent origin. + + :return: The joint frame pose with respect to the parent origin + """ + return self.parent_to_constraint.to_pose() + + @property + def position_wrt_child_as_list(self) -> List[float]: + """ + Returns the constraint frame pose with respect to the child origin as a list. + + :return: The constraint frame pose with respect to the child origin as a list + """ + return self.pose_wrt_child.position_as_list() + + @property + def orientation_wrt_child_as_list(self) -> List[float]: + """ + Returns the constraint frame orientation with respect to the child origin as a list. + + :return: The constraint frame orientation with respect to the child origin as a list + """ + return self.pose_wrt_child.orientation_as_list() + + @property + def pose_wrt_child(self) -> Pose: + """ + Returns the joint frame pose with respect to the child origin. + + :return: The joint frame pose with respect to the child origin + """ + return self.child_to_constraint.to_pose() + + +class Constraint(AbstractConstraint): + """ + Represents a constraint between two links in the World. + """ + + def __init__(self, + parent_link: Link, + child_link: Link, + _type: JointType, + axis_in_child_frame: Point, + constraint_to_parent: Transform, + child_to_constraint: Transform): + parent_to_constraint = constraint_to_parent.invert() + AbstractConstraint.__init__(self, parent_link, child_link, _type, parent_to_constraint, child_to_constraint) + self.axis: Point = axis_in_child_frame + + @property + def axis_as_list(self) -> List[float]: + """ + Returns the axis of this constraint as a list. + + :return: The axis of this constraint as a list of xyz + """ + return [self.axis.x, self.axis.y, self.axis.z] + + +class Attachment(AbstractConstraint): + def __init__(self, + parent_link: Link, + child_link: Link, + bidirectional: Optional[bool] = False, + parent_to_child_transform: Optional[Transform] = None, + constraint_id: Optional[int] = None): + """ + Creates an attachment between the parent object link and the child object link. + This could be a bidirectional attachment, meaning that both objects will move when one moves. + + :param parent_link: The parent object link. + :param child_link: The child object link. + :param bidirectional: If true, both objects will move when one moves. + :param parent_to_child_transform: The transform from the parent link to the child object link. + :param constraint_id: The id of the constraint in the simulator. + """ + super().__init__(parent_link, child_link, JointType.FIXED, parent_to_child_transform, + Transform(frame=child_link.tf_frame)) + self.id = constraint_id + self.bidirectional: bool = bidirectional + self._loose: bool = False + + if self.parent_to_child_transform is None: + self.update_transform() + + if self.id is None: + self.add_fixed_constraint() + + def update_transform_and_constraint(self) -> None: + """ + Updates the transform and constraint of this attachment. + """ + self.update_transform() + self.update_constraint() + + def update_transform(self) -> None: + """ + Updates the transform of this attachment by calculating the transform from the parent link to the child link. + """ + self.parent_to_child_transform = self.calculate_transform() + + def update_constraint(self) -> None: + """ + Updates the constraint of this attachment by removing the old constraint if one exists and adding a new one. + """ + self.remove_constraint_if_exists() + self.add_fixed_constraint() + + def add_fixed_constraint(self) -> None: + """ + Adds a fixed constraint between the parent link and the child link. + """ + self.id = self.parent_link.add_fixed_constraint_with_link(self.child_link) + + def calculate_transform(self) -> Transform: + """ + Calculates the transform from the parent link to the child link. + """ + return self.parent_link.get_transform_to_link(self.child_link) + + def remove_constraint_if_exists(self) -> None: + """ + Removes the constraint between the parent and the child links if one exists. + """ + if self.child_link in self.parent_link.constraint_ids: + self.parent_link.remove_constraint_with_link(self.child_link) + + def get_inverse(self) -> 'Attachment': + """ + :return: A new Attachment object with the parent and child links swapped. + """ + attachment = Attachment(self.child_link, self.parent_link, self.bidirectional, + constraint_id=self.id) + attachment.loose = not self._loose + return attachment + + @property + def loose(self) -> bool: + """ + If true, then the child object will not move when parent moves. + """ + return self._loose + + @loose.setter + def loose(self, loose: bool) -> None: + """ + Sets the loose property of this attachment. + + :param loose: If true, then the child object will not move when parent moves. + """ + self._loose = loose and not self.bidirectional + + @property + def is_reversed(self) -> bool: + """ + :return: True if the parent and child links are swapped. + """ + return self.loose + + def __del__(self) -> None: + """ + Removes the constraint between the parent and the child links if one exists when the attachment is deleted. + """ + self.remove_constraint_if_exists() + + def __copy__(self): + return Attachment(self.parent_link, self.child_link, self.bidirectional, self.parent_to_child_transform, + self.id) + + def __eq__(self, other): + return (self.parent_link.name == other.parent_link.name + and self.child_link.name == other.child_link.name + and self.bidirectional == other.bidirectional + and np.allclose(self.parent_to_child_transform.translation_as_list(), + other.parent_to_child_transform.translation_as_list(), rtol=0, atol=1e-4) + and np.allclose(self.parent_to_child_transform.rotation_as_list(), + other.parent_to_child_transform.rotation_as_list(), rtol=0, atol=1e-4)) + + def __hash__(self): + return hash((self.parent_link.name, self.child_link.name, self.bidirectional, self.parent_to_child_transform)) diff --git a/src/pycram/event.py b/src/pycram/world_concepts/event.py similarity index 97% rename from src/pycram/event.py rename to src/pycram/world_concepts/event.py index 7b52b4a44..462e3180f 100644 --- a/src/pycram/event.py +++ b/src/pycram/world_concepts/event.py @@ -1,7 +1,7 @@ # used for delayed evaluation of typing until python 3.11 becomes mainstream from __future__ import annotations -from typing import Callable, List, Optional, Any +from typing_extensions import Callable, List, Optional, Any class Event: diff --git a/src/pycram/world_concepts/world_object.py b/src/pycram/world_concepts/world_object.py new file mode 100644 index 000000000..5ac03a825 --- /dev/null +++ b/src/pycram/world_concepts/world_object.py @@ -0,0 +1,1018 @@ +from __future__ import annotations + +import logging +import os + +import numpy as np +import rospy +from geometry_msgs.msg import Point, Quaternion +from typing_extensions import Type, Optional, Dict, Tuple, List, Union + +from ..description import ObjectDescription, LinkDescription +from ..object_descriptors.urdf import ObjectDescription as URDFObject +from ..robot_descriptions import robot_description +from ..world import WorldEntity, World +from ..world_concepts.constraints import Attachment +from ..datastructures.dataclasses import (Color, ObjectState, LinkState, JointState, + AxisAlignedBoundingBox, VisualShape) +from ..datastructures.enums import ObjectType, JointType +from ..local_transformer import LocalTransformer +from ..datastructures.pose import Pose, Transform + +Link = ObjectDescription.Link + + +class Object(WorldEntity): + """ + Represents a spawned Object in the World. + """ + + prospection_world_prefix: str = "prospection/" + """ + The ObjectDescription of the object, this contains the name and type of the object as well as the path to the source + file. + """ + + def __init__(self, name: str, obj_type: ObjectType, path: str, + description: Optional[Type[ObjectDescription]] = URDFObject, + pose: Optional[Pose] = None, + world: Optional[World] = None, + color: Optional[Color] = Color(), + ignore_cached_files: Optional[bool] = False): + """ + The constructor loads the description file into the given World, if no World is specified the + :py:attr:`~World.current_world` will be used. It is also possible to load .obj and .stl file into the World. + The rgba_color parameter is only used when loading .stl or .obj files, + for URDFs :func:`~Object.set_color` can be used. + + :param name: The name of the object + :param obj_type: The type of the object as an ObjectType enum. + :param path: The path to the source file, if only a filename is provided then the resources directories will be searched. + :param description: The ObjectDescription of the object, this contains the joints and links of the object. + :param pose: The pose at which the Object should be spawned + :param world: The World in which the object should be spawned, if no world is specified the :py:attr:`~World.current_world` will be used. + :param color: The rgba_color with which the object should be spawned. + :param ignore_cached_files: If true the file will be spawned while ignoring cached files. + """ + + super().__init__(-1, world) + + if pose is None: + pose = Pose() + + self.name: str = name + self.obj_type: ObjectType = obj_type + self.color: Color = color + self.description = description() + self.cache_manager = self.world.cache_manager + + self.local_transformer = LocalTransformer() + self.original_pose = self.local_transformer.transform_pose(pose, "map") + self._current_pose = self.original_pose + + self.id, self.path = self._load_object_and_get_id(path, ignore_cached_files) + + self.description.update_description_from_file(self.path) + + self.tf_frame = ((self.prospection_world_prefix if self.world.is_prospection_world else "") + + f"{self.name}_{self.id}") + + if robot_description is not None: + if self.description.name == robot_description.name: + self.world.set_robot_if_not_set(self) + + self._init_joint_name_and_id_map() + self._init_link_name_and_id_map() + + self._init_links_and_update_transforms() + self._init_joints() + + self.attachments: Dict[Object, Attachment] = {} + + if not self.world.is_prospection_world: + self._add_to_world_sync_obj_queue() + + self.world.objects.append(self) + + @property + def pose(self): + return self.get_pose() + + @pose.setter + def pose(self, pose: Pose): + self.set_pose(pose) + + def _load_object_and_get_id(self, path: Optional[str] = None, + ignore_cached_files: Optional[bool] = False) -> Tuple[int, Union[str, None]]: + """ + Loads an object to the given World with the given position and orientation. The rgba_color will only be + used when an .obj or .stl file is given. + If a .obj or .stl file is given, before spawning, an urdf file with the .obj or .stl as mesh will be created + and this URDf file will be loaded instead. + When spawning a URDf file a new file will be created in the cache directory, if there exists none. + This new file will have resolved mesh file paths, meaning there will be no references + to ROS packges instead there will be absolute file paths. + + :param path: The path to the description file, if None then no file will be loaded, this is useful when the PyCRAM is not responsible for loading the file but another system is. + :param ignore_cached_files: Whether to ignore files in the cache directory. + :return: The unique id of the object and the path of the file that was loaded. + """ + if path is not None: + try: + path = self.world.update_cache_dir_with_object(path, ignore_cached_files, self) + except FileNotFoundError as e: + logging.error("Could not generate description from file.") + raise e + + try: + simulator_object_path = path + if simulator_object_path is None: + # This is useful when the object is already loaded in the simulator so it would use its name instead of + # its path + simulator_object_path = self.name + obj_id = self.world.load_object_and_get_id(simulator_object_path, Pose(self.get_position_as_list(), + self.get_orientation_as_list())) + return obj_id, path + + except Exception as e: + logging.error( + "The File could not be loaded. Please note that the path has to be either a URDF, stl or obj file or" + " the name of an URDF string on the parameter server.") + os.remove(path) + raise e + + def _init_joint_name_and_id_map(self) -> None: + """ + Creates a dictionary which maps the joint names to their unique ids and vice versa. + """ + n_joints = len(self.joint_names) + self.joint_name_to_id = dict(zip(self.joint_names, range(n_joints))) + self.joint_id_to_name = dict(zip(self.joint_name_to_id.values(), self.joint_name_to_id.keys())) + + def _init_link_name_and_id_map(self) -> None: + """ + Creates a dictionary which maps the link names to their unique ids and vice versa. + """ + n_links = len(self.link_names) + self.link_name_to_id: Dict[str, int] = dict(zip(self.link_names, range(n_links))) + self.link_name_to_id[self.description.get_root()] = -1 + self.link_id_to_name: Dict[int, str] = dict(zip(self.link_name_to_id.values(), self.link_name_to_id.keys())) + + def _init_links_and_update_transforms(self) -> None: + """ + Initializes the link objects from the URDF file and creates a dictionary which maps the link names to the + corresponding link objects. + """ + self.links = {} + for link_name, link_id in self.link_name_to_id.items(): + link_description = self.description.get_link_by_name(link_name) + if link_name == self.description.get_root(): + self.links[link_name] = self.description.RootLink(self) + else: + self.links[link_name] = self.description.Link(link_id, link_description, self) + + self.update_link_transforms() + + def _init_joints(self): + """ + Initialize the joint objects from the URDF file and creates a dictionary which mas the joint names to the + corresponding joint objects + """ + self.joints = {} + for joint_name, joint_id in self.joint_name_to_id.items(): + joint_description = self.description.get_joint_by_name(joint_name) + self.joints[joint_name] = self.description.Joint(joint_id, joint_description, self) + + def _add_to_world_sync_obj_queue(self) -> None: + """ + Adds this object to the objects queue of the WorldSync object of the World. + """ + self.world.world_sync.add_obj_queue.put(self) + + @property + def link_names(self) -> List[str]: + """ + :return: The name of each link as a list. + """ + return self.world.get_object_link_names(self) + + @property + def joint_names(self) -> List[str]: + """ + :return: The name of each joint as a list. + """ + return self.world.get_object_joint_names(self) + + def get_link(self, link_name: str) -> ObjectDescription.Link: + """ + Returns the link object with the given name. + + :param link_name: The name of the link. + :return: The link object. + """ + return self.links[link_name] + + def get_link_pose(self, link_name: str) -> Pose: + """ + Returns the pose of the link with the given name. + + :param link_name: The name of the link. + :return: The pose of the link. + """ + return self.links[link_name].pose + + def get_link_position(self, link_name: str) -> Point: + """ + Returns the position of the link with the given name. + + :param link_name: The name of the link. + :return: The position of the link. + """ + return self.links[link_name].position + + def get_link_position_as_list(self, link_name: str) -> List[float]: + """ + Returns the position of the link with the given name. + + :param link_name: The name of the link. + :return: The position of the link. + """ + return self.links[link_name].position_as_list + + def get_link_orientation(self, link_name: str) -> Quaternion: + """ + Returns the orientation of the link with the given name. + + :param link_name: The name of the link. + :return: The orientation of the link. + """ + return self.links[link_name].orientation + + def get_link_orientation_as_list(self, link_name: str) -> List[float]: + """ + Returns the orientation of the link with the given name. + + :param link_name: The name of the link. + :return: The orientation of the link. + """ + return self.links[link_name].orientation_as_list + + def get_link_tf_frame(self, link_name: str) -> str: + """ + Returns the tf frame of the link with the given name. + + :param link_name: The name of the link. + :return: The tf frame of the link. + """ + return self.links[link_name].tf_frame + + def get_link_axis_aligned_bounding_box(self, link_name: str) -> AxisAlignedBoundingBox: + """ + Returns the axis aligned bounding box of the link with the given name. + + :param link_name: The name of the link. + :return: The axis aligned bounding box of the link. + """ + return self.links[link_name].get_axis_aligned_bounding_box() + + def get_transform_between_links(self, from_link: str, to_link: str) -> Transform: + """ + Returns the transform between two links. + + :param from_link: The name of the link from which the transform should be calculated. + :param to_link: The name of the link to which the transform should be calculated. + """ + return self.links[from_link].get_transform_to_link(self.links[to_link]) + + def get_link_color(self, link_name: str) -> Color: + """ + Returns the color of the link with the given name. + + :param link_name: The name of the link. + :return: The color of the link. + """ + return self.links[link_name].color + + def set_link_color(self, link_name: str, color: List[float]) -> None: + """ + Sets the color of the link with the given name. + + :param link_name: The name of the link. + :param color: The new color of the link. + """ + self.links[link_name].color = Color.from_list(color) + + def get_link_geometry(self, link_name: str) -> Union[VisualShape, None]: + """ + Returns the geometry of the link with the given name. + + :param link_name: The name of the link. + :return: The geometry of the link. + """ + return self.links[link_name].geometry + + def get_link_transform(self, link_name: str) -> Transform: + """ + Returns the transform of the link with the given name. + + :param link_name: The name of the link. + :return: The transform of the link. + """ + return self.links[link_name].transform + + def get_link_origin(self, link_name: str) -> Pose: + """ + Returns the origin of the link with the given name. + + :param link_name: The name of the link. + :return: The origin of the link as a 'Pose'. + """ + return self.links[link_name].origin + + def get_link_origin_transform(self, link_name: str) -> Transform: + """ + Returns the origin transform of the link with the given name. + + :param link_name: The name of the link. + :return: The origin transform of the link. + """ + return self.links[link_name].origin_transform + + @property + def base_origin_shift(self) -> np.ndarray: + """ + The shift between the base of the object and the origin of the object. + + :return: A numpy array with the shift between the base of the object and the origin of the object. + """ + return np.array(self.get_position_as_list()) - np.array(self.get_base_position_as_list()) + + def __repr__(self): + skip_attr = ["links", "joints", "description", "attachments"] + return self.__class__.__qualname__ + f"(" + ', \n'.join( + [f"{key}={value}" if key not in skip_attr else f"{key}: ..." for key, value in self.__dict__.items()]) + ")" + + def remove(self) -> None: + """ + Removes this object from the World it currently resides in. + For the object to be removed it has to be detached from all objects it + is currently attached to. After this is done a call to world remove object is done + to remove this Object from the simulation/world. + """ + self.world.remove_object(self) + + def reset(self, remove_saved_states=True) -> None: + """ + Resets the Object to the state it was first spawned in. + All attached objects will be detached, all joints will be set to the + default position of 0 and the object will be set to the position and + orientation in which it was spawned. + + :param remove_saved_states: If True the saved states will be removed. + """ + self.detach_all() + self.reset_all_joints_positions() + self.set_pose(self.original_pose) + if remove_saved_states: + self.remove_saved_states() + + def attach(self, + child_object: Object, + parent_link: Optional[str] = None, + child_link: Optional[str] = None, + bidirectional: Optional[bool] = True) -> None: + """ + Attaches another object to this object. This is done by + saving the transformation between the given link, if there is one, and + the base pose of the other object. Additionally, the name of the link, to + which the object is attached, will be saved. + Furthermore, a simulator constraint will be created so the attachment + also works while simulation. + Loose attachments means that the attachment will only be one-directional. For example, if this object moves the + other, attached, object will also move but not the other way around. + + :param child_object: The other object that should be attached. + :param parent_link: The link name of this object. + :param child_link: The link name of the other object. + :param bidirectional: If the attachment should be a loose attachment. + """ + parent_link = self.links[parent_link] if parent_link else self.root_link + child_link = child_object.links[child_link] if child_link else child_object.root_link + + attachment = Attachment(parent_link, child_link, bidirectional) + + self.attachments[child_object] = attachment + child_object.attachments[self] = attachment.get_inverse() + + self.world.attachment_event(self, [self, child_object]) + + def detach(self, child_object: Object) -> None: + """ + Detaches another object from this object. This is done by + deleting the attachment from the attachments dictionary of both objects + and deleting the constraint of the simulator. + Afterward the detachment event of the corresponding World will be fired. + + :param child_object: The object which should be detached + """ + del self.attachments[child_object] + del child_object.attachments[self] + + self.world.detachment_event(self, [self, child_object]) + + def detach_all(self) -> None: + """ + Detach all objects attached to this object. + """ + attachments = self.attachments.copy() + for att in attachments.keys(): + self.detach(att) + + def update_attachment_with_object(self, child_object: Object): + self.attachments[child_object].update_transform_and_constraint() + + def get_position(self) -> Point: + """ + Returns the position of this Object as a list of xyz. + + :return: The current position of this object + """ + return self.get_pose().position + + def get_orientation(self) -> Pose.orientation: + """ + Returns the orientation of this object as a list of xyzw, representing a quaternion. + + :return: A list of xyzw + """ + return self.get_pose().orientation + + def get_position_as_list(self) -> List[float]: + """ + Returns the position of this Object as a list of xyz. + + :return: The current position of this object + """ + return self.get_pose().position_as_list() + + def get_base_position_as_list(self) -> List[float]: + """ + Returns the position of this Object as a list of xyz. + + :return: The current position of this object + """ + return self.get_base_origin().position_as_list() + + def get_orientation_as_list(self) -> List[float]: + """ + Returns the orientation of this object as a list of xyzw, representing a quaternion. + + :return: A list of xyzw + """ + return self.get_pose().orientation_as_list() + + def get_pose(self) -> Pose: + """ + Returns the position of this object as a list of xyz. Alias for :func:`~Object.get_position`. + + :return: The current pose of this object + """ + return self._current_pose + + def set_pose(self, pose: Pose, base: Optional[bool] = False, set_attachments: Optional[bool] = True) -> None: + """ + Sets the Pose of the object. + + :param pose: New Pose for the object + :param base: If True places the object base instead of origin at the specified position and orientation + :param set_attachments: Whether to set the poses of the attached objects to this object or not. + """ + pose_in_map = self.local_transformer.transform_pose(pose, "map") + if base: + pose_in_map.position = (np.array(pose_in_map.position_as_list()) + self.base_origin_shift).tolist() + + self.reset_base_pose(pose_in_map) + + if set_attachments: + self._set_attached_objects_poses() + + def reset_base_pose(self, pose: Pose): + self.world.reset_object_base_pose(self, pose) + self.update_pose() + + def update_pose(self): + """ + Updates the current pose of this object from the world, and updates the poses of all links. + """ + self._current_pose = self.world.get_object_pose(self) + self._update_all_links_poses() + self.update_link_transforms() + + def _update_all_links_poses(self): + """ + Updates the poses of all links by getting them from the simulator. + """ + for link in self.links.values(): + link._update_pose() + + def move_base_to_origin_pose(self) -> None: + """ + Move the object such that its base will be at the current origin position. + This is useful when placing objects on surfaces where you want the object base in contact with the surface. + """ + self.set_pose(self.get_pose(), base=True) + + def save_state(self, state_id) -> None: + """ + Saves the state of this object by saving the state of all links and attachments. + + :param state_id: The unique id of the state. + """ + self.save_links_states(state_id) + self.save_joints_states(state_id) + super().save_state(state_id) + + def save_links_states(self, state_id: int) -> None: + """ + Saves the state of all links of this object. + + :param state_id: The unique id of the state. + """ + for link in self.links.values(): + link.save_state(state_id) + + def save_joints_states(self, state_id: int) -> None: + """ + Saves the state of all joints of this object. + + :param state_id: The unique id of the state. + """ + for joint in self.joints.values(): + joint.save_state(state_id) + + @property + def current_state(self) -> ObjectState: + return ObjectState(self.get_pose(), self.attachments.copy(), self.link_states.copy(), self.joint_states.copy()) + + @current_state.setter + def current_state(self, state: ObjectState) -> None: + if self.get_pose().dist(state.pose) != 0.0: + self.set_pose(state.pose, base=False, set_attachments=False) + + self.set_attachments(state.attachments) + self.link_states = state.link_states + self.joint_states = state.joint_states + + def set_attachments(self, attachments: Dict[Object, Attachment]) -> None: + """ + Sets the attachments of this object to the given attachments. + :param attachments: A dictionary with the object as key and the attachment as value. + """ + for obj, attachment in attachments.items(): + if self.world.is_prospection_world and not obj.world.is_prospection_world: + obj = self.world.get_prospection_object_for_object(obj) + if obj in self.attachments: + if self.attachments[obj] != attachment: + self.detach(obj) + else: + continue + self.attach(obj, attachment.parent_link.name, attachment.child_link.name, + attachment.bidirectional) + + @property + def link_states(self) -> Dict[int, LinkState]: + """ + Returns the current state of all links of this object. + + :return: A dictionary with the link id as key and the current state of the link as value. + """ + return {link.id: link.current_state for link in self.links.values()} + + @link_states.setter + def link_states(self, link_states: Dict[int, LinkState]) -> None: + """ + Sets the current state of all links of this object. + + :param link_states: A dictionary with the link id as key and the current state of the link as value. + """ + for link in self.links.values(): + link.current_state = link_states[link.id] + + @property + def joint_states(self) -> Dict[int, JointState]: + """ + Returns the current state of all joints of this object. + + :return: A dictionary with the joint id as key and the current state of the joint as value. + """ + return {joint.id: joint.current_state for joint in self.joints.values()} + + @joint_states.setter + def joint_states(self, joint_states: Dict[int, JointState]) -> None: + """ + Sets the current state of all joints of this object. + + :param joint_states: A dictionary with the joint id as key and the current state of the joint as value. + """ + for joint in self.joints.values(): + joint.current_state = joint_states[joint.id] + + def remove_saved_states(self) -> None: + """ + Removes all saved states of this object. + """ + super().remove_saved_states() + self.remove_links_saved_states() + self.remove_joints_saved_states() + + def remove_links_saved_states(self) -> None: + """ + Removes all saved states of the links of this object. + """ + for link in self.links.values(): + link.remove_saved_states() + + def remove_joints_saved_states(self) -> None: + """ + Removes all saved states of the joints of this object. + """ + for joint in self.joints.values(): + joint.remove_saved_states() + + def _set_attached_objects_poses(self, already_moved_objects: Optional[List[Object]] = None) -> None: + """ + Updates the positions of all attached objects. This is done + by calculating the new pose in world coordinate frame and setting the + base pose of the attached objects to this new pose. + After this the _set_attached_objects method of all attached objects + will be called. + + :param already_moved_objects: A list of Objects that were already moved, these will be excluded to prevent loops in the update. + """ + + if already_moved_objects is None: + already_moved_objects = [] + + for child in self.attachments: + + if child in already_moved_objects: + continue + + attachment = self.attachments[child] + if attachment.loose: + self.update_attachment_with_object(child) + child.update_attachment_with_object(self) + + else: + link_to_object = attachment.parent_to_child_transform + child.set_pose(link_to_object.to_pose(), set_attachments=False) + child._set_attached_objects_poses(already_moved_objects + [self]) + + def set_position(self, position: Union[Pose, Point, List], base=False) -> None: + """ + Sets this Object to the given position, if base is true the bottom of the Object will be placed at the position + instead of the origin in the center of the Object. The given position can either be a Pose, + in this case only the position is used or a geometry_msgs.msg/Point which is the position part of a Pose. + + :param position: Target position as xyz. + :param base: If the bottom of the Object should be placed or the origin in the center. + """ + pose = Pose() + if isinstance(position, Pose): + target_position = position.position + pose.frame = position.frame + elif isinstance(position, Point): + target_position = position + elif isinstance(position, list): + target_position = position + else: + raise TypeError("The given position has to be a Pose, Point or a list of xyz.") + + pose.position = target_position + pose.orientation = self.get_orientation() + self.set_pose(pose, base=base) + + def set_orientation(self, orientation: Union[Pose, Quaternion, List, Tuple, np.ndarray]) -> None: + """ + Sets the orientation of the Object to the given orientation. Orientation can either be a Pose, in this case only + the orientation of this pose is used or a geometry_msgs.msg/Quaternion which is the orientation of a Pose. + + :param orientation: Target orientation given as a list of xyzw. + """ + pose = Pose() + if isinstance(orientation, Pose): + target_orientation = orientation.orientation + pose.frame = orientation.frame + elif isinstance(orientation, Quaternion): + target_orientation = orientation + elif (isinstance(orientation, list) or isinstance(orientation, np.ndarray) or isinstance(orientation, tuple)) \ + and len(orientation) == 4: + target_orientation = Quaternion(*orientation) + else: + raise TypeError("The given orientation has to be a Pose, Quaternion or one of list/tuple/ndarray of xyzw.") + + pose.pose.position = self.get_position() + pose.pose.orientation = target_orientation + self.set_pose(pose) + + def get_joint_id(self, name: str) -> int: + """ + Returns the unique id for a joint name. As used by the world/simulator. + + :param name: The joint name + :return: The unique id + """ + return self.joint_name_to_id[name] + + def get_root_link_description(self) -> LinkDescription: + """ + Returns the root link of the URDF of this object. + + :return: The root link as defined in the URDF of this object. + """ + for link_description in self.description.links: + if link_description.name == self.root_link_name: + return link_description + + @property + def root_link(self) -> ObjectDescription.Link: + """ + Returns the root link of this object. + + :return: The root link of this object. + """ + return self.links[self.description.get_root()] + + @property + def root_link_name(self) -> str: + """ + Returns the name of the root link of this object. + + :return: The name of the root link of this object. + """ + return self.description.get_root() + + def get_root_link_id(self) -> int: + """ + Returns the unique id of the root link of this object. + + :return: The unique id of the root link of this object. + """ + return self.get_link_id(self.description.get_root()) + + def get_link_id(self, link_name: str) -> int: + """ + Returns a unique id for a link name. + + :param link_name: The name of the link. + :return: The unique id of the link. + """ + return self.link_name_to_id[link_name] + + def get_link_by_id(self, link_id: int) -> ObjectDescription.Link: + """ + Returns the link for a given unique link id + + :param link_id: The unique id of the link. + :return: The link object. + """ + return self.links[self.link_id_to_name[link_id]] + + def reset_all_joints_positions(self) -> None: + """ + Sets the current position of all joints to 0. This is useful if the joints should be reset to their default + """ + joint_names = list(self.joint_name_to_id.keys()) + joint_positions = [0] * len(joint_names) + self.set_joint_positions(dict(zip(joint_names, joint_positions))) + + def set_joint_positions(self, joint_poses: dict) -> None: + """ + Sets the current position of multiple joints at once, this method should be preferred when setting + multiple joints at once instead of running :func:`~Object.set_joint_position` in a loop. + + :param joint_poses: + """ + for joint_name, joint_position in joint_poses.items(): + self.joints[joint_name].position = joint_position + # self.update_pose() + self._update_all_links_poses() + self.update_link_transforms() + self._set_attached_objects_poses() + + def set_joint_position(self, joint_name: str, joint_position: float) -> None: + """ + Sets the position of the given joint to the given joint pose and updates the poses of all attached objects. + + :param joint_name: The name of the joint + :param joint_position: The target pose for this joint + """ + self.joints[joint_name].position = joint_position + self._update_all_links_poses() + self.update_link_transforms() + self._set_attached_objects_poses() + + def get_joint_position(self, joint_name: str) -> float: + """ + :param joint_name: The name of the joint + :return: The current position of the given joint + """ + return self.joints[joint_name].position + + def get_joint_damping(self, joint_name: str) -> float: + """ + :param joint_name: The name of the joint + :return: The damping of the given joint + """ + return self.joints[joint_name].damping + + def get_joint_upper_limit(self, joint_name: str) -> float: + """ + :param joint_name: The name of the joint + :return: The upper limit of the given joint + """ + return self.joints[joint_name].upper_limit + + def get_joint_lower_limit(self, joint_name: str) -> float: + """ + :param joint_name: The name of the joint + :return: The lower limit of the given joint + """ + return self.joints[joint_name].lower_limit + + def get_joint_axis(self, joint_name: str) -> Point: + """ + :param joint_name: The name of the joint + :return: The axis of the given joint + """ + return self.joints[joint_name].axis + + def get_joint_type(self, joint_name: str) -> JointType: + """ + :param joint_name: The name of the joint + :return: The type of the given joint + """ + return self.joints[joint_name].type + + def get_joint_limits(self, joint_name: str) -> Tuple[float, float]: + """ + :param joint_name: The name of the joint + :return: The lower and upper limits of the given joint + """ + return self.joints[joint_name].limits + + def get_joint_child_link(self, joint_name: str) -> ObjectDescription.Link: + """ + :param joint_name: The name of the joint + :return: The child link of the given joint + """ + return self.joints[joint_name].child_link + + def get_joint_parent_link(self, joint_name: str) -> ObjectDescription.Link: + """ + :param joint_name: The name of the joint + :return: The parent link of the given joint + """ + return self.joints[joint_name].parent_link + + def find_joint_above_link(self, link_name: str, joint_type: JointType) -> str: + """ + Traverses the chain from 'link' to the URDF origin and returns the first joint that is of type 'joint_type'. + + :param link_name: AbstractLink name above which the joint should be found + :param joint_type: Joint type that should be searched for + :return: Name of the first joint which has the given type + """ + chain = self.description.get_chain(self.description.get_root(), link_name) + reversed_chain = reversed(chain) + container_joint = None + for element in reversed_chain: + if element in self.joint_name_to_id and self.get_joint_type(element) == joint_type: + container_joint = element + break + if not container_joint: + rospy.logwarn(f"No joint of type {joint_type} found above link {link_name}") + return container_joint + + def get_positions_of_all_joints(self) -> Dict[str, float]: + """ + Returns the positions of all joints of the object as a dictionary of joint names and joint positions. + + :return: A dictionary with all joints positions'. + """ + return {j.name: j.position for j in self.joints.values()} + + def update_link_transforms(self, transform_time: Optional[rospy.Time] = None) -> None: + """ + Updates the transforms of all links of this object using time 'transform_time' or the current ros time. + """ + for link in self.links.values(): + link.update_transform(transform_time) + + def contact_points(self) -> List: + """ + Returns a list of contact points of this Object with other Objects. + + :return: A list of all contact points with other objects + """ + return self.world.get_object_contact_points(self) + + def contact_points_simulated(self) -> List: + """ + Returns a list of all contact points between this Object and other Objects after stepping the simulation once. + + :return: A list of contact points between this Object and other Objects + """ + state_id = self.world.save_state() + self.world.step() + contact_points = self.contact_points() + self.world.restore_state(state_id) + return contact_points + + def set_color(self, rgba_color: Color) -> None: + """ + Changes the color of this object, the color has to be given as a list + of RGBA values. + + :param rgba_color: The color as Color object with RGBA values between 0 and 1 + """ + # Check if there is only one link, this is the case for primitive + # forms or if loaded from an .stl or .obj file + if self.links != {}: + for link in self.links.values(): + link.color = rgba_color + else: + self.root_link.color = rgba_color + + def get_color(self) -> Union[Color, Dict[str, Color]]: + """ + This method returns the rgba_color of this object. The return is either: + + 1. A Color object with RGBA values, this is the case if the object only has one link (this + happens for example if the object is spawned from a .obj or .stl file) + 2. A dict with the link name as key and the rgba_color as value. The rgba_color is given as a Color Object. + Please keep in mind that not every link may have a rgba_color. This is dependent on the URDF from which + the object is spawned. + + :return: The rgba_color as Color object with RGBA values between 0 and 1 or a dict with the link name as key and the rgba_color as value. + """ + link_to_color_dict = self.links_colors + + if len(link_to_color_dict) == 1: + return list(link_to_color_dict.values())[0] + else: + return link_to_color_dict + + @property + def links_colors(self) -> Dict[str, Color]: + """ + The color of each link as a dictionary with link names as keys and RGBA colors as values. + """ + return self.world.get_colors_of_object_links(self) + + def get_axis_aligned_bounding_box(self) -> AxisAlignedBoundingBox: + """ + :return: The axis aligned bounding box of this object. + """ + return self.world.get_object_axis_aligned_bounding_box(self) + + def get_base_origin(self) -> Pose: + """ + :return: the origin of the base/bottom of this object. + """ + aabb = self.get_axis_aligned_bounding_box() + base_width = np.absolute(aabb.min_x - aabb.max_x) + base_length = np.absolute(aabb.min_y - aabb.max_y) + return Pose([aabb.min_x + base_width / 2, aabb.min_y + base_length / 2, aabb.min_z], + self.get_orientation_as_list()) + + def copy_to_prospection(self) -> Object: + """ + Copies this object to the prospection world. + + :return: The copied object in the prospection world. + """ + obj = Object(self.name, self.obj_type, self.path, type(self.description), self.get_pose(), + self.world.prospection_world, self.color) + obj.current_state = self.current_state + return obj + + def __copy__(self) -> Object: + """ + Returns a copy of this object. The copy will have the same name, type, path, description, pose, world and color. + + :return: A copy of this object. + """ + obj = Object(self.name, self.obj_type, self.path, type(self.description), self.get_pose(), + self.world.prospection_world, self.color) + obj.current_state = self.current_state + return obj + + def __eq__(self, other): + if not isinstance(other, Object): + return False + return (self.id == other.id and self.world == other.world and self.name == other.name + and self.obj_type == other.obj_type) + + def __hash__(self): + return hash((self.name, self.obj_type, self.id, self.world.id)) diff --git a/src/pycram/world_reasoning.py b/src/pycram/world_reasoning.py new file mode 100644 index 000000000..7d91fc3dd --- /dev/null +++ b/src/pycram/world_reasoning.py @@ -0,0 +1,275 @@ +import itertools +from typing_extensions import List, Tuple, Optional, Union, Dict + +import numpy as np + +from .external_interfaces.ik import try_to_reach, try_to_reach_with_grasp +from .datastructures.pose import Pose, Transform +from .robot_descriptions import robot_description +from .world_concepts.world_object import Object +from .world import World, UseProspectionWorld + + +def stable(obj: Object) -> bool: + """ + Checks if an object is stable in the world. Stable meaning that it's position will not change after simulating + physics in the World. This will be done by simulating the world for 10 seconds and compare + the previous coordinates with the coordinates after the simulation. + + :param obj: The object which should be checked + :return: True if the given object is stable in the world False else + """ + prospection_obj = World.current_world.get_prospection_object_for_object(obj) + with UseProspectionWorld(): + coords_prev = prospection_obj.get_position_as_list() + World.current_world.set_gravity([0, 0, -9.8]) + + World.current_world.simulate(2) + coords_past = prospection_obj.get_position_as_list() + + coords_prev = list(map(lambda n: round(n, 3), coords_prev)) + coords_past = list(map(lambda n: round(n, 3), coords_past)) + return coords_past == coords_prev + + +def contact( + object1: Object, + object2: Object, + return_links: bool = False) -> Union[bool, Tuple[bool, List]]: + """ + Checks if two objects are in contact or not. If the links should be returned then the output will also contain a + list of tuples where the first element is the link name of 'object1' and the second element is the link name of + 'object2'. + + :param object1: The first object + :param object2: The second object + :param return_links: If the respective links on the objects that are in contact should be returned. + :return: True if the two objects are in contact False else. If links should be returned a list of links in contact + """ + + with UseProspectionWorld(): + prospection_obj1 = World.current_world.get_prospection_object_for_object(object1) + prospection_obj2 = World.current_world.get_prospection_object_for_object(object2) + + World.current_world.perform_collision_detection() + con_points = World.current_world.get_contact_points_between_two_objects(prospection_obj1, prospection_obj2) + + if return_links: + contact_links = [] + for point in con_points: + contact_links.append((prospection_obj1.get_link_by_id(point[3]), + prospection_obj2.get_link_by_id(point[4]))) + return con_points != (), contact_links + + else: + return con_points != () + + +def get_visible_objects( + camera_pose: Pose, + front_facing_axis: Optional[List[float]] = None) -> Tuple[np.ndarray, Pose]: + """ + Returns a segmentation mask of the objects that are visible from the given camera pose and the front facing axis. + + :param camera_pose: The pose of the camera in world coordinate frame. + :param front_facing_axis: The axis, of the camera frame, which faces to the front of the robot. Given as list of xyz + :return: A segmentation mask of the objects that are visible and the pose of the point at exactly 2 meters in front of the camera in the direction of the front facing axis with respect to the world coordinate frame. + """ + front_facing_axis = robot_description.front_facing_axis if not front_facing_axis else front_facing_axis + + world_to_cam = camera_pose.to_transform("camera") + + cam_to_point = Transform(list(np.multiply(front_facing_axis, 2)), [0, 0, 0, 1], "camera", + "point") + target_point = (world_to_cam * cam_to_point).to_pose() + + seg_mask = World.current_world.get_images_for_target(target_point, camera_pose)[2] + + return seg_mask, target_point + + +def visible( + obj: Object, + camera_pose: Pose, + front_facing_axis: Optional[List[float]] = None, + threshold: float = 0.8) -> bool: + """ + Checks if an object is visible from a given position. This will be achieved by rendering the object + alone and counting the visible pixel, then rendering the complete scene and compare the visible pixels with the + absolut count of pixels. + + :param obj: The object for which the visibility should be checked + :param camera_pose: The pose of the camera in map frame + :param front_facing_axis: The axis, of the camera frame, which faces to the front of the robot. Given as list of xyz + :param threshold: The minimum percentage of the object that needs to be visible for this method to return true. + :return: True if the object is visible from the camera_position False if not + """ + with UseProspectionWorld(): + prospection_obj = World.current_world.get_prospection_object_for_object(obj) + if World.robot: + prospection_robot = World.current_world.get_prospection_object_for_object(World.robot) + + state_id = World.current_world.save_state() + for obj in World.current_world.objects: + if obj == prospection_obj or (World.robot and obj == prospection_robot): + continue + else: + obj.set_pose(Pose([100, 100, 0], [0, 0, 0, 1])) + + seg_mask, target_point = get_visible_objects(camera_pose, front_facing_axis) + flat_list = list(itertools.chain.from_iterable(seg_mask)) + max_pixel = sum(list(map(lambda x: 1 if x == prospection_obj.id else 0, flat_list))) + World.current_world.restore_state(state_id) + + if max_pixel == 0: + # Object is not visible + return False + + seg_mask = World.current_world.get_images_for_target(target_point, camera_pose)[2] + flat_list = list(itertools.chain.from_iterable(seg_mask)) + real_pixel = sum(list(map(lambda x: 1 if x == prospection_obj.id else 0, flat_list))) + + return real_pixel / max_pixel > threshold > 0 + + +def occluding( + obj: Object, + camera_pose: Pose, + front_facing_axis: Optional[List[float]] = None) -> List[Object]: + """ + Lists all objects which are occluding the given object. This works similar to 'visible'. + First the object alone will be rendered and the position of the pixels of the object in the picture will be saved. + After that the complete scene will be rendered and the previous saved pixel positions will be compared to the + actual pixels, if in one pixel another object is visible ot will be saved as occluding. + + :param obj: The object for which occlusion should be checked + :param camera_pose: The pose of the camera in world coordinate frame + :param front_facing_axis: The axis, of the camera frame, which faces to the front of the robot. Given as list of xyz + :return: A list of occluding objects + """ + + with UseProspectionWorld(): + state_id = World.current_world.save_state() + for other_obj in World.current_world.objects: + if other_obj.name == World.current_world.robot.name: + continue + elif obj.get_pose() == other_obj.get_pose(): + obj = other_obj + else: + other_obj.set_pose(Pose([100, 100, 0], [0, 0, 0, 1])) + + seg_mask, target_point = get_visible_objects(camera_pose, front_facing_axis) + + # All indices where the object that could be occluded is in the image + # [0] at the end is to reduce by one dimension because dstack adds an unnecessary dimension + pix = np.dstack(np.nonzero(seg_mask == obj.id))[0] + + World.current_world.restore_state(state_id) + + occluding_obj_ids = [] + seg_mask = World.current_world.get_images_for_target(target_point, camera_pose)[2] + for c in pix: + if not seg_mask[c[0]][c[1]] == obj.id: + occluding_obj_ids.append(seg_mask[c[0]][c[1]]) + + occ_objects = list(set(map(World.current_world.get_object_by_id, occluding_obj_ids))) + occ_objects = list(map(World.current_world.get_object_for_prospection_object, occ_objects)) + + return occ_objects + + +def reachable( + pose_or_object: Union[Object, Pose], + robot: Object, + gripper_name: str, + threshold: float = 0.01) -> bool: + """ + Checks if the robot can reach a given position. To determine this the inverse kinematics are + calculated and applied. Afterward the distance between the position and the given end effector is calculated, if + it is smaller than the threshold the reasoning query returns True, if not it returns False. + + :param pose_or_object: The position and rotation or Object for which reachability should be checked or an Object + :param robot: The robot that should reach for the position + :param gripper_name: The name of the end effector + :param threshold: The threshold between the end effector and the position. + :return: True if the end effector is closer than the threshold to the target position, False in every other case + """ + + prospection_robot = World.current_world.get_prospection_object_for_object(robot) + with UseProspectionWorld(): + target_pose = try_to_reach(pose_or_object, prospection_robot, gripper_name) + + if not target_pose: + return False + + gripper_pose = prospection_robot.get_link_pose(gripper_name) + diff = target_pose.dist(gripper_pose) + + return diff < threshold + + +def blocking( + pose_or_object: Union[Object, Pose], + robot: Object, + gripper_name: str, + grasp: str = None) -> Union[List[Object], None]: + """ + Checks if any objects are blocking another object when a robot tries to pick it. This works + similar to the reachable predicate. First the inverse kinematics between the robot and the object will be + calculated and applied. Then it will be checked if the robot is in contact with any object except the given one. + If the given pose or Object is not reachable None will be returned + + :param pose_or_object: The object or pose for which blocking objects should be found + :param robot: The robot Object who reaches for the object + :param gripper_name: The name of the end effector of the robot + :param grasp: The grasp type with which the object should be grasped + :return: A list of objects the robot is in collision with when reaching for the specified object or None if the pose or object is not reachable. + """ + + prospection_robot = World.current_world.get_prospection_object_for_object(robot) + with UseProspectionWorld(): + if grasp: + try_to_reach_with_grasp(pose_or_object, prospection_robot, gripper_name, grasp) + else: + try_to_reach(pose_or_object, prospection_robot, gripper_name) + + block = [] + for obj in World.current_world.objects: + if contact(prospection_robot, obj): + block.append(World.current_world.get_object_for_prospection_object(obj)) + return block + + +def supporting( + object1: Object, + object2: Object) -> bool: + """ + Checks if one object is supporting another object. An object supports another object if they are in + contact and the second object is above the first one. (e.g. a Bottle will be supported by a table) + + :param object1: Object that is supported + :param object2: Object that supports the first object + :return: True if the second object is in contact with the first one and the second is above the first else False + """ + return contact(object1, object2) and object2.get_position().z > object1.get_position().z + + +def link_pose_for_joint_config( + obj: Object, + joint_config: Dict[str, float], + link_name: str) -> Pose: + """ + Returns the pose a link would be in if the given joint configuration would be applied to the object. + This is done by using the respective object in the prospection world and applying the joint configuration + to this one. After applying the joint configuration the link position is taken from there. + + :param obj: Object of which the link is a part + :param joint_config: Dict with the goal joint configuration + :param link_name: Name of the link for which the pose should be returned + :return: The pose of the link after applying the joint configuration + """ + prospection_object = World.current_world.get_prospection_object_for_object(obj) + with UseProspectionWorld(): + for joint, pose in joint_config.items(): + prospection_object.set_joint_position(joint, pose) + return prospection_object.get_link_pose(link_name) diff --git a/src/pycram/worlds/__init__.py b/src/pycram/worlds/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/src/pycram/worlds/bullet_world.py b/src/pycram/worlds/bullet_world.py new file mode 100755 index 000000000..f1bbc00bb --- /dev/null +++ b/src/pycram/worlds/bullet_world.py @@ -0,0 +1,551 @@ +# used for delayed evaluation of typing until python 3.11 becomes mainstream +from __future__ import annotations + +import threading +import time + +import numpy as np +import pybullet as p +import rosgraph +import rospy +from geometry_msgs.msg import Point +from typing_extensions import List, Optional, Dict + +from ..datastructures.enums import ObjectType, WorldMode, JointType +from ..datastructures.pose import Pose +from ..object_descriptors.urdf import ObjectDescription +from ..world import World +from ..world_concepts.constraints import Constraint +from ..datastructures.dataclasses import Color, AxisAlignedBoundingBox, MultiBody, VisualShape, BoxVisualShape +from ..world_concepts.world_object import Object + +Link = ObjectDescription.Link +RootLink = ObjectDescription.RootLink +Joint = ObjectDescription.Joint + + +class BulletWorld(World): + """ + This class represents a BulletWorld, which is a simulation environment that uses the Bullet Physics Engine. This + class is the main interface to the Bullet Physics Engine and should be used to spawn Objects, simulate Physic and + manipulate the Bullet World. + """ + + extension: str = ObjectDescription.get_file_extension() + + # Check is for sphinx autoAPI to be able to work in a CI workflow + if rosgraph.is_master_online(): # and "/pycram" not in rosnode.get_node_names(): + rospy.init_node('pycram') + + def __init__(self, mode: WorldMode = WorldMode.DIRECT, is_prospection_world: bool = False, sim_frequency=240): + """ + Creates a new simulation, the type decides of the simulation should be a rendered window or just run in the + background. There can only be one rendered simulation. + The BulletWorld object also initializes the Events for attachment, detachment and for manipulating the world. + + :param mode: Can either be "GUI" for rendered window or "DIRECT" for non-rendered. The default is "GUI" + :param is_prospection_world: For internal usage, decides if this BulletWorld should be used as a shadow world. + """ + super().__init__(mode=mode, is_prospection_world=is_prospection_world, simulation_frequency=sim_frequency) + + # This disables file caching from PyBullet, since this would also cache + # files that can not be loaded + p.setPhysicsEngineParameter(enableFileCaching=0) + + # Needed to let the other thread start the simulation, before Objects are spawned. + time.sleep(0.1) + self.vis_axis: List[int] = [] + + # Some default settings + self.set_gravity([0, 0, -9.8]) + + if not is_prospection_world: + _ = Object("floor", ObjectType.ENVIRONMENT, "plane" + self.extension, + world=self) + + def _init_world(self, mode: WorldMode): + self._gui_thread: Gui = Gui(self, mode) + self._gui_thread.start() + time.sleep(0.1) + + def load_object_and_get_id(self, path: Optional[str] = None, pose: Optional[Pose] = None) -> int: + if pose is None: + pose = Pose() + return self._load_object_and_get_id(path, pose) + + def _load_object_and_get_id(self, path: str, pose: Pose) -> int: + if path is None: + raise ValueError("Path to the object file is required.") + return p.loadURDF(path, + basePosition=pose.position_as_list(), + baseOrientation=pose.orientation_as_list(), physicsClientId=self.id) + + def remove_object_from_simulator(self, obj: Object) -> None: + p.removeBody(obj.id, self.id) + + def add_constraint(self, constraint: Constraint) -> int: + + constraint_id = p.createConstraint(constraint.parent_object_id, + constraint.parent_link_id, + constraint.child_object_id, + constraint.child_link_id, + constraint.type.value, + constraint.axis_as_list, + constraint.position_wrt_parent_as_list, + constraint.position_wrt_child_as_list, + constraint.orientation_wrt_parent_as_list, + constraint.orientation_wrt_child_as_list, + physicsClientId=self.id) + return constraint_id + + def remove_constraint(self, constraint_id): + p.removeConstraint(constraint_id, physicsClientId=self.id) + + def get_joint_position(self, joint: ObjectDescription.Joint) -> float: + return p.getJointState(joint.object_id, joint.id, physicsClientId=self.id)[0] + + def get_object_joint_names(self, obj: Object) -> List[str]: + return [p.getJointInfo(obj.id, i, physicsClientId=self.id)[1].decode('utf-8') + for i in range(self.get_object_number_of_joints(obj))] + + def get_link_pose(self, link: ObjectDescription.Link) -> Pose: + bullet_link_state = p.getLinkState(link.object_id, link.id, physicsClientId=self.id) + return Pose(*bullet_link_state[4:6]) + + def get_object_link_names(self, obj: Object) -> List[str]: + num_links = self.get_object_number_of_links(obj) + return [p.getJointInfo(obj.id, i, physicsClientId=self.id)[12].decode('utf-8') + for i in range(num_links)] + + def get_object_number_of_links(self, obj: Object) -> int: + return p.getNumJoints(obj.id, physicsClientId=self.id) + + get_object_number_of_joints = get_object_number_of_links + + def perform_collision_detection(self) -> None: + p.performCollisionDetection(physicsClientId=self.id) + + def get_object_contact_points(self, obj: Object) -> List: + """ + For a more detailed explanation of the + returned list please look at: + `PyBullet Doc `_ + """ + self.perform_collision_detection() + return p.getContactPoints(obj.id, physicsClientId=self.id) + + def get_contact_points_between_two_objects(self, obj1: Object, obj2: Object) -> List: + self.perform_collision_detection() + return p.getContactPoints(obj1.id, obj2.id, physicsClientId=self.id) + + def reset_joint_position(self, joint: ObjectDescription.Joint, joint_position: str) -> None: + p.resetJointState(joint.object_id, joint.id, joint_position, physicsClientId=self.id) + + def reset_object_base_pose(self, obj: Object, pose: Pose) -> None: + p.resetBasePositionAndOrientation(obj.id, pose.position_as_list(), pose.orientation_as_list(), + physicsClientId=self.id) + + def step(self): + p.stepSimulation(physicsClientId=self.id) + + def get_object_pose(self, obj: Object) -> Pose: + return Pose(*p.getBasePositionAndOrientation(obj.id, physicsClientId=self.id)) + + def set_link_color(self, link: ObjectDescription.Link, rgba_color: Color): + p.changeVisualShape(link.object_id, link.id, rgbaColor=rgba_color.get_rgba(), physicsClientId=self.id) + + def get_link_color(self, link: ObjectDescription.Link) -> Color: + return self.get_colors_of_object_links(link.object)[link.name] + + def get_colors_of_object_links(self, obj: Object) -> Dict[str, Color]: + visual_data = p.getVisualShapeData(obj.id, physicsClientId=self.id) + link_id_to_name = {v: k for k, v in obj.link_name_to_id.items()} + links = list(map(lambda x: link_id_to_name[x[1]], visual_data)) + colors = list(map(lambda x: Color.from_rgba(x[7]), visual_data)) + link_to_color = dict(zip(links, colors)) + return link_to_color + + def get_object_axis_aligned_bounding_box(self, obj: Object) -> AxisAlignedBoundingBox: + return AxisAlignedBoundingBox.from_min_max(*p.getAABB(obj.id, physicsClientId=self.id)) + + def get_link_axis_aligned_bounding_box(self, link: ObjectDescription.Link) -> AxisAlignedBoundingBox: + return AxisAlignedBoundingBox.from_min_max(*p.getAABB(link.object_id, link.id, physicsClientId=self.id)) + + def set_realtime(self, real_time: bool) -> None: + p.setRealTimeSimulation(1 if real_time else 0, physicsClientId=self.id) + + def set_gravity(self, gravity_vector: List[float]) -> None: + p.setGravity(gravity_vector[0], gravity_vector[1], gravity_vector[2], physicsClientId=self.id) + + def disconnect_from_physics_server(self): + p.disconnect(physicsClientId=self.id) + + def join_threads(self): + """ + Joins the GUI thread if it exists. + """ + self.join_gui_thread_if_exists() + + def join_gui_thread_if_exists(self): + if self._gui_thread: + self._gui_thread.join() + + def save_physics_simulator_state(self) -> int: + return p.saveState(physicsClientId=self.id) + + def restore_physics_simulator_state(self, state_id): + p.restoreState(state_id, physicsClientId=self.id) + + def remove_physics_simulator_state(self, state_id: int): + p.removeState(state_id, physicsClientId=self.id) + + def add_vis_axis(self, pose: Pose, + length: Optional[float] = 0.2) -> None: + """ + Creates a Visual object which represents the coordinate frame at the given + position and orientation. There can be an unlimited amount of vis axis objects. + + :param pose: The pose at which the axis should be spawned + :param length: Optional parameter to configure the length of the axes + """ + + pose_in_map = self.local_transformer.transform_pose(pose, "map") + + box_vis_shape = BoxVisualShape(Color(1, 0, 0, 0.8), [length, 0.01, 0.01], [length, 0.01, 0.01]) + vis_x = self.create_visual_shape(box_vis_shape) + + box_vis_shape = BoxVisualShape(Color(0, 1, 0, 0.8), [0.01, length, 0.01], [0.01, length, 0.01]) + vis_y = self.create_visual_shape(box_vis_shape) + + box_vis_shape = BoxVisualShape(Color(0, 0, 1, 0.8), [0.01, 0.01, length], [0.01, 0.01, length]) + vis_z = self.create_visual_shape(box_vis_shape) + + multibody = MultiBody(base_visual_shape_index=-1, base_pose=pose_in_map, + link_visual_shape_indices=[vis_x, vis_y, vis_z], + link_poses=[Pose(), Pose(), Pose()], link_masses=[1.0, 1.0, 1.0], + link_inertial_frame_poses=[Pose(), Pose(), Pose()], link_parent_indices=[0, 0, 0], + link_joint_types=[JointType.FIXED.value, JointType.FIXED.value, JointType.FIXED.value], + link_joint_axis=[Point(1, 0, 0), Point(0, 1, 0), Point(0, 0, 1)], + link_collision_shape_indices=[-1, -1, -1]) + + self.vis_axis.append(self.create_multi_body(multibody)) + + def remove_vis_axis(self) -> None: + """ + Removes all spawned vis axis objects that are currently in this BulletWorld. + """ + for vis_id in self.vis_axis: + p.removeBody(vis_id, physicsClientId=self.id) + self.vis_axis = [] + + def ray_test(self, from_position: List[float], to_position: List[float]) -> int: + res = p.rayTest(from_position, to_position, physicsClientId=self.id) + return res[0][0] + + def ray_test_batch(self, from_positions: List[List[float]], to_positions: List[List[float]], + num_threads: int = 1) -> List[int]: + return p.rayTestBatch(from_positions, to_positions, numThreads=num_threads, + physicsClientId=self.id) + + def create_visual_shape(self, visual_shape: VisualShape) -> int: + return p.createVisualShape(visual_shape.visual_geometry_type.value, + rgbaColor=visual_shape.rgba_color.get_rgba(), + visualFramePosition=visual_shape.visual_frame_position, + physicsClientId=self.id, **visual_shape.shape_data()) + + def create_multi_body(self, multi_body: MultiBody) -> int: + return p.createMultiBody(baseVisualShapeIndex=-multi_body.base_visual_shape_index, + linkVisualShapeIndices=multi_body.link_visual_shape_indices, + basePosition=multi_body.base_pose.position_as_list(), + baseOrientation=multi_body.base_pose.orientation_as_list(), + linkPositions=[pose.position_as_list() for pose in multi_body.link_poses], + linkMasses=multi_body.link_masses, + linkOrientations=[pose.orientation_as_list() for pose in multi_body.link_poses], + linkInertialFramePositions=[pose.position_as_list() + for pose in multi_body.link_inertial_frame_poses], + linkInertialFrameOrientations=[pose.orientation_as_list() + for pose in multi_body.link_inertial_frame_poses], + linkParentIndices=multi_body.link_parent_indices, + linkJointTypes=multi_body.link_joint_types, + linkJointAxis=[[point.x, point.y, point.z] for point in multi_body.link_joint_axis], + linkCollisionShapeIndices=multi_body.link_collision_shape_indices) + + def get_images_for_target(self, + target_pose: Pose, + cam_pose: Pose, + size: Optional[int] = 256) -> List[np.ndarray]: + # TODO: Might depend on robot cameras, if so please add these camera parameters to RobotDescription object + # TODO: of your robot with a CameraDescription object. + fov = 90 + aspect = size / size + near = 0.2 + far = 100 + + view_matrix = p.computeViewMatrix(cam_pose.position_as_list(), target_pose.position_as_list(), [0, 0, 1]) + projection_matrix = p.computeProjectionMatrixFOV(fov, aspect, near, far) + return list(p.getCameraImage(size, size, view_matrix, projection_matrix, + physicsClientId=self.id))[2:5] + + def add_text(self, text: str, position: List[float], orientation: Optional[List[float]] = None, + size: Optional[float] = None, color: Optional[Color] = Color(), life_time: Optional[float] = 0, + parent_object_id: Optional[int] = None, parent_link_id: Optional[int] = None) -> int: + args = {} + if orientation: + args["textOrientation"] = orientation + if size: + args["textSize"] = size + if life_time: + args["lifeTime"] = life_time + if parent_object_id: + args["parentObjectUniqueId"] = parent_object_id + if parent_link_id: + args["parentLinkIndex"] = parent_link_id + return p.addUserDebugText(text, position, color.get_rgb(), physicsClientId=self.id, **args) + + def remove_text(self, text_id: Optional[int] = None) -> None: + if text_id is not None: + p.removeUserDebugItem(text_id, physicsClientId=self.id) + else: + p.removeAllUserDebugItems(physicsClientId=self.id) + + def enable_joint_force_torque_sensor(self, obj: Object, fts_joint_idx: int) -> None: + p.enableJointForceTorqueSensor(obj.id, fts_joint_idx, enableSensor=1, physicsClientId=self.id) + + def disable_joint_force_torque_sensor(self, obj: Object, joint_id: int) -> None: + p.enableJointForceTorqueSensor(obj.id, joint_id, enableSensor=0, physicsClientId=self.id) + + def get_joint_reaction_force_torque(self, obj: Object, joint_id: int) -> List[float]: + return p.getJointState(obj.id, joint_id, physicsClientId=self.id)[2] + + def get_applied_joint_motor_torque(self, obj: Object, joint_id: int) -> float: + return p.getJointState(obj.id, joint_id, physicsClientId=self.id)[3] + + +class Gui(threading.Thread): + """ + For internal use only. Creates a new thread for the physics simulation that is active until closed by + :func:`~World.exit` + Also contains the code for controlling the camera. + """ + + def __init__(self, world: World, mode: WorldMode): + threading.Thread.__init__(self) + self.world = world + self.mode: WorldMode = mode + + def run(self): + """ + Initializes the new simulation and checks in an endless loop + if it is still active. If it is the thread will be suspended for 1/80 seconds, if it is not the method and + thus the thread terminates. The loop also checks for mouse and keyboard inputs to control the camera. + """ + if self.mode == WorldMode.DIRECT: + self.world.id = p.connect(p.DIRECT) + else: + self.world.id = p.connect(p.GUI) + + # DISCLAIMER + # This camera control only works if the WorldMooe.GUI BulletWorld is the first one to be created. This is + # due to a bug in the function pybullet.getDebugVisualizerCamera() which only returns the information of + # the first created simulation. + + # Disable the side windows of the GUI + p.configureDebugVisualizer(p.COV_ENABLE_GUI, 0, physicsClientId=self.world.id) + # Change the init camera pose + p.resetDebugVisualizerCamera(cameraDistance=1.5, cameraYaw=270.0, cameraPitch=-50, + cameraTargetPosition=[-2, 0, 1], physicsClientId=self.world.id) + + # Get the initial camera target location + camera_target_position = p.getDebugVisualizerCamera(physicsClientId=self.world.id)[11] + + sphere_visual_id = p.createVisualShape(p.GEOM_SPHERE, radius=0.05, rgbaColor=[1, 0, 0, 1], + physicsClientId=self.world.id) + + # Create a sphere with a radius of 0.05 and a mass of 0 + sphere_uid = p.createMultiBody(baseMass=0.0, + baseInertialFramePosition=[0, 0, 0], + baseVisualShapeIndex=sphere_visual_id, + basePosition=camera_target_position, + physicsClientId=self.world.id) + + # Define the maxSpeed, used in calculations + max_speed = 16 + + # Set initial Camera Rotation + camera_yaw = 50 + camera_pitch = -35 + + # Keep track of the mouse state + mouse_state = [0, 0, 0] + old_mouse_x, old_mouse_y = 0, 0 + + # Determines if the sphere at cameraTargetPosition is visible + visible = 1 + + # Loop to update the camera position based on keyboard events + while p.isConnected(self.world.id): + # Monitor user input + keys = p.getKeyboardEvents(self.world.id) + mouse = p.getMouseEvents(self.world.id) + + # Get infos about the camera + width, height, dist = (p.getDebugVisualizerCamera()[0], + p.getDebugVisualizerCamera()[1], + p.getDebugVisualizerCamera()[10]) + #print("width: ", width, "height: ", height, "dist: ", dist) + camera_target_position = p.getDebugVisualizerCamera(self.world.id)[11] + + # Get vectors used for movement on x,y,z Vector + x_vec = [p.getDebugVisualizerCamera(self.world.id)[2][i] for i in [0, 4, 8]] + y_vec = [p.getDebugVisualizerCamera(self.world.id)[2][i] for i in [2, 6, 10]] + z_vec = (0, 0, 1) # [p.getDebugVisualizerCamera()[2][i] for i in [1, 5, 9]] + + # Check the mouse state + if mouse: + for m in mouse: + + mouse_x = m[2] + mouse_y = m[1] + + # update mouseState + # Left Mouse button + if m[0] == 2 and m[3] == 0: + mouse_state[0] = m[4] + # Middle mouse button (scroll wheel) + if m[0] == 2 and m[3] == 1: + mouse_state[1] = m[4] + # right mouse button + if m[0] == 2 and m[3] == 2: + mouse_state[2] = m[4] + + # change visibility by clicking the mousewheel + # if m[4] == 6 and m[3] == 1 and visible == 1: + # visible = 0 + # elif m[4] == 6 and visible == 0: + # visible = 1 + + # camera movement when the left mouse button is pressed + if mouse_state[0] == 3: + speed_x = abs(old_mouse_x - mouse_x) if (abs(old_mouse_x - mouse_x)) < max_speed \ + else max_speed + speed_y = abs(old_mouse_y - mouse_y) if (abs(old_mouse_y - mouse_y)) < max_speed \ + else max_speed + + # max angle of 89.5 and -89.5 to make sure the camera does not flip (is annoying) + if mouse_x < old_mouse_x: + if (camera_pitch + speed_x) < 89.5: + camera_pitch += (speed_x / 4) + 1 + elif mouse_x > old_mouse_x: + if (camera_pitch - speed_x) > -89.5: + camera_pitch -= (speed_x / 4) + 1 + + if mouse_y < old_mouse_y: + camera_yaw += (speed_y / 4) + 1 + elif mouse_y > old_mouse_y: + camera_yaw -= (speed_y / 4) + 1 + + # Camera movement when the middle mouse button is pressed + if mouse_state[1] == 3: + speed_x = abs(old_mouse_x - mouse_x) + factor = 0.05 + + if mouse_x < old_mouse_x: + dist = dist - speed_x * factor + elif mouse_x > old_mouse_x: + dist = dist + speed_x * factor + dist = max(dist, 0.1) + + # camera movement when the right mouse button is pressed + if mouse_state[2] == 3: + speed_x = abs(old_mouse_x - mouse_x) if (abs(old_mouse_x - mouse_x)) < 5 else 5 + speed_y = abs(old_mouse_y - mouse_y) if (abs(old_mouse_y - mouse_y)) < 5 else 5 + factor = 0.05 + + if mouse_x < old_mouse_x: + camera_target_position = np.subtract(camera_target_position, + np.multiply(np.multiply(z_vec, factor), speed_x)) + elif mouse_x > old_mouse_x: + camera_target_position = np.add(camera_target_position, + np.multiply(np.multiply(z_vec, factor), speed_x)) + + if mouse_y < old_mouse_y: + camera_target_position = np.add(camera_target_position, + np.multiply(np.multiply(x_vec, factor), speed_y)) + elif mouse_y > old_mouse_y: + camera_target_position = np.subtract(camera_target_position, + np.multiply(np.multiply(x_vec, factor), speed_y)) + # update oldMouse values + old_mouse_y, old_mouse_x = mouse_y, mouse_x + + # check the keyboard state + if keys: + # if shift is pressed, double the speed + if p.B3G_SHIFT in keys: + speed_mult = 5 + else: + speed_mult = 2.5 + + # if control is pressed, the movements caused by the arrowkeys, the '+' as well as the '-' key + # change + if p.B3G_CONTROL in keys: + + # the up and down arrowkeys cause the targetPos to move along the z axis of the map + if p.B3G_DOWN_ARROW in keys: + camera_target_position = np.subtract(camera_target_position, + np.multiply(np.multiply(z_vec, 0.03), speed_mult)) + elif p.B3G_UP_ARROW in keys: + camera_target_position = np.add(camera_target_position, + np.multiply(np.multiply(z_vec, 0.03), speed_mult)) + + # left and right arrowkeys cause the targetPos to move horizontally relative to the camera + if p.B3G_LEFT_ARROW in keys: + camera_target_position = np.subtract(camera_target_position, + np.multiply(np.multiply(x_vec, 0.03), speed_mult)) + elif p.B3G_RIGHT_ARROW in keys: + camera_target_position = np.add(camera_target_position, + np.multiply(np.multiply(x_vec, 0.03), speed_mult)) + + # the '+' and '-' keys cause the targetpos to move forwards and backwards relative to the camera + # while the camera stays at a constant distance. SHIFT + '=' is for US layout + if ord("+") in keys or p.B3G_SHIFT in keys and ord("=") in keys: + camera_target_position = np.subtract(camera_target_position, + np.multiply(np.multiply(y_vec, 0.03), speed_mult)) + elif ord("-") in keys: + camera_target_position = np.add(camera_target_position, + np.multiply(np.multiply(y_vec, 0.03), speed_mult)) + + # standard bindings for thearrowkeys, the '+' as well as the '-' key + else: + + # left and right arrowkeys cause the camera to rotate around the yaw axis + if p.B3G_RIGHT_ARROW in keys: + camera_yaw += (360 / width) * speed_mult + elif p.B3G_LEFT_ARROW in keys: + camera_yaw -= (360 / width) * speed_mult + + # the up and down arrowkeys cause the camera to rotate around the pitch axis + if p.B3G_DOWN_ARROW in keys: + if (camera_pitch + (360 / height) * speed_mult) < 89.5: + camera_pitch += (360 / height) * speed_mult + elif p.B3G_UP_ARROW in keys: + if (camera_pitch - (360 / height) * speed_mult) > -89.5: + camera_pitch -= (360 / height) * speed_mult + + # the '+' and '-' keys cause the camera to zoom towards and away from the targetPos without + # moving it. SHIFT + '=' is for US layout since the events can't handle shift plus something + if ord("+") in keys or p.B3G_SHIFT in keys and ord("=") in keys: + if (dist - (dist * 0.02) * speed_mult) > 0.1: + dist -= dist * 0.02 * speed_mult + elif ord("-") in keys: + dist += dist * 0.02 * speed_mult + # print("dist: ", dist) + # print("camera_yaw: ", camera_yaw) + # print("camera_pitch: ", camera_pitch) + # print("camera_target_position: ", camera_target_position) + + p.resetDebugVisualizerCamera(cameraDistance=dist, cameraYaw=camera_yaw, cameraPitch=camera_pitch, + cameraTargetPosition=camera_target_position, physicsClientId=self.world.id) + if visible == 0: + camera_target_position = (0.0, -50, 50) + p.resetBasePositionAndOrientation(sphere_uid, camera_target_position, [0, 0, 0, 1], physicsClientId=self.world.id) + time.sleep(1. / 80.) diff --git a/test/bullet_world_testcase.py b/test/bullet_world_testcase.py index b34b434c4..e82620c66 100644 --- a/test/bullet_world_testcase.py +++ b/test/bullet_world_testcase.py @@ -1,43 +1,81 @@ +import time import unittest -import numpy as np -import rospkg - -from pycram.bullet_world import BulletWorld, Object, fix_missing_inertial -from pycram.pose import Pose +import pycram.task +from pycram.worlds.bullet_world import BulletWorld +from pycram.world_concepts.world_object import Object +from pycram.datastructures.pose import Pose from pycram.robot_descriptions import robot_description from pycram.process_module import ProcessModule -from pycram.enums import ObjectType -import os -import tf +from pycram.datastructures.enums import ObjectType, WorldMode +from pycram.object_descriptors.urdf import ObjectDescription +from pycram.ros.viz_marker_publisher import VizMarkerPublisher class BulletWorldTestCase(unittest.TestCase): world: BulletWorld + viz_marker_publisher: VizMarkerPublisher + extension: str = ObjectDescription.get_file_extension() @classmethod def setUpClass(cls): - cls.world = BulletWorld("DIRECT") - cls.robot = Object(robot_description.name, ObjectType.ROBOT, robot_description.name + ".urdf") - cls.kitchen = Object("kitchen", ObjectType.ENVIRONMENT, "kitchen.urdf") + cls.world = BulletWorld(mode=WorldMode.DIRECT) cls.milk = Object("milk", ObjectType.MILK, "milk.stl", pose=Pose([1.3, 1, 0.9])) - cls.cereal = Object("cereal", ObjectType.BREAKFAST_CEREAL, "breakfast_cereal.stl", pose=Pose([1.3, 0.7, 0.95])) + cls.robot = Object(robot_description.name, ObjectType.ROBOT, + robot_description.name + cls.extension) + cls.kitchen = Object("kitchen", ObjectType.ENVIRONMENT, "kitchen" + cls.extension) + cls.cereal = Object("cereal", ObjectType.BREAKFAST_CEREAL, "breakfast_cereal.stl", + ObjectDescription, pose=Pose([1.3, 0.7, 0.95])) ProcessModule.execution_delay = False + cls.viz_marker_publisher = VizMarkerPublisher() def setUp(self): - self.world.reset_bullet_world() + self.world.reset_world() # DO NOT WRITE TESTS HERE!!! # Test related to the BulletWorld should be written in test_bullet_world.py # Tests in here would not be properly executed in the CI def tearDown(self): - self.world.reset_bullet_world() + pycram.task.reset_tree() + time.sleep(0.05) + self.world.reset_world() @classmethod def tearDownClass(cls): + cls.viz_marker_publisher._stop_publishing() cls.world.exit() +class BulletWorldGUITestCase(unittest.TestCase): + + world: BulletWorld + extension: str = ObjectDescription.get_file_extension() + + @classmethod + def setUpClass(cls): + cls.world = BulletWorld(mode=WorldMode.GUI) + cls.milk = Object("milk", ObjectType.MILK, "milk.stl", pose=Pose([1.3, 1, 0.9])) + cls.robot = Object(robot_description.name, ObjectType.ROBOT, + robot_description.name + cls.extension) + cls.kitchen = Object("kitchen", ObjectType.ENVIRONMENT, "kitchen" + cls.extension) + cls.cereal = Object("cereal", ObjectType.BREAKFAST_CEREAL, "breakfast_cereal.stl", + ObjectDescription, pose=Pose([1.3, 0.7, 0.95])) + ProcessModule.execution_delay = False + + def setUp(self): + self.world.reset_world() + + # DO NOT WRITE TESTS HERE!!! + # Test related to the BulletWorld should be written in test_bullet_world.py + # Tests in here would not be properly executed in the CI + + def tearDown(self): + pass + + @classmethod + def tearDownClass(cls): + cls.viz_marker_publisher._stop_publishing() + cls.world.exit() diff --git a/test/test_action_designator.py b/test/test_action_designator.py index 0a452e9bf..af5708b09 100644 --- a/test/test_action_designator.py +++ b/test/test_action_designator.py @@ -1,11 +1,12 @@ -import time import unittest from pycram.designators import action_designator, object_designator +from pycram.designators.actions.actions import MoveTorsoActionPerformable, PickUpActionPerformable, \ + NavigateActionPerformable, FaceAtPerformable +from pycram.local_transformer import LocalTransformer from pycram.robot_descriptions import robot_description from pycram.process_module import simulated_robot -from pycram.pose import Pose -from pycram.enums import ObjectType -import pycram.enums +from pycram.datastructures.pose import Pose +from pycram.datastructures.enums import ObjectType, Arms from bullet_world_testcase import BulletWorldTestCase import numpy as np @@ -18,7 +19,7 @@ def test_move_torso(self): self.assertEqual(description.ground().position, 0.3) with simulated_robot: description.resolve().perform() - self.assertEqual(self.world.robot.get_joint_state(robot_description.torso_joint), 0.3) + self.assertEqual(self.world.robot.get_joint_position(robot_description.torso_joint), 0.3) def test_set_gripper(self): description = action_designator.SetGripperAction(["left"], ["open", "close"]) @@ -28,7 +29,7 @@ def test_set_gripper(self): with simulated_robot: description.resolve().perform() for joint, state in robot_description.get_static_gripper_chain("left", "open").items(): - self.assertEqual(self.world.robot.get_joint_state(joint), state) + self.assertEqual(self.world.robot.get_joint_position(joint), state) def test_release(self): object_description = object_designator.ObjectDesignatorDescription(names=["milk"]) @@ -43,39 +44,40 @@ def test_grip(self): self.assertEqual(description.ground().object_designator.name, "milk") def test_park_arms(self): - description = action_designator.ParkArmsAction([pycram.enums.Arms.BOTH]) - self.assertEqual(description.ground().arm, pycram.enums.Arms.BOTH) + description = action_designator.ParkArmsAction([Arms.BOTH]) + self.assertEqual(description.ground().arm, Arms.BOTH) with simulated_robot: description.resolve().perform() for joint, pose in robot_description.get_static_joint_chain("right", "park").items(): - self.assertEqual(self.world.robot.get_joint_state(joint), pose) + joint_position = self.world.robot.get_joint_position(joint) + self.assertEqual(joint_position, pose) for joint, pose in robot_description.get_static_joint_chain("left", "park").items(): - self.assertEqual(self.world.robot.get_joint_state(joint), pose) + self.assertEqual(self.world.robot.get_joint_position(joint), pose) def test_navigate(self): - description = action_designator.NavigateAction([Pose([0, 0, 0], [0, 0, 0, 1])]) - self.assertEqual(description.ground().target_location, Pose([0, 0, 0], [0, 0, 0, 1])) + description = action_designator.NavigateAction([Pose([1, 0, 0], [0, 0, 0, 1])]) + self.assertEqual(description.ground().target_location, Pose([1, 0, 0], [0, 0, 0, 1])) def test_pick_up(self): object_description = object_designator.ObjectDesignatorDescription(names=["milk"]) description = action_designator.PickUpAction(object_description, ["left"], ["front"]) self.assertEqual(description.ground().object_designator.name, "milk") with simulated_robot: - action_designator.NavigateAction.Action(Pose([0.6, 0.4, 0], [0, 0, 0, 1])).perform() - action_designator.MoveTorsoAction.Action(0.3).perform() + NavigateActionPerformable(Pose([0.6, 0.4, 0], [0, 0, 0, 1])).perform() + MoveTorsoActionPerformable(0.3).perform() description.resolve().perform() - self.assertTrue(object_description.resolve().bullet_world_object in self.robot.attachments.keys()) + self.assertTrue(object_description.resolve().world_object in self.robot.attachments.keys()) def test_place(self): object_description = object_designator.ObjectDesignatorDescription(names=["milk"]) description = action_designator.PlaceAction(object_description, [Pose([1.3, 1, 0.9], [0, 0, 0, 1])], ["left"]) self.assertEqual(description.ground().object_designator.name, "milk") with simulated_robot: - action_designator.NavigateAction.Action(Pose([0.6, 0.4, 0], [0, 0, 0, 1])).perform() - action_designator.MoveTorsoAction.Action(0.3).perform() - action_designator.PickUpAction.Action(object_description.resolve(), "left", "front").perform() + NavigateActionPerformable(Pose([0.6, 0.4, 0], [0, 0, 0, 1])).perform() + MoveTorsoActionPerformable(0.3).perform() + PickUpActionPerformable(object_description.resolve(), "left", "front").perform() description.resolve().perform() - self.assertFalse(object_description.resolve().bullet_world_object in self.robot.attachments.keys()) + self.assertFalse(object_description.resolve().world_object in self.robot.attachments.keys()) def test_look_at(self): description = action_designator.LookAtAction([Pose([1, 0, 1])]) @@ -87,15 +89,14 @@ def test_look_at(self): def test_detect(self): self.kitchen.set_pose(Pose([10, 10, 0])) self.milk.set_pose(Pose([1.5, 0, 1.2])) - # time.sleep(1) object_description = object_designator.ObjectDesignatorDescription(names=["milk"]) description = action_designator.DetectAction(object_description) self.assertEqual(description.ground().object_designator.name, "milk") with simulated_robot: detected_object = description.resolve().perform() self.assertEqual(detected_object.name, "milk") - self.assertEqual(detected_object.type, ObjectType.MILK) - self.assertEqual(detected_object.bullet_world_object, self.milk) + self.assertEqual(detected_object.obj_type, ObjectType.MILK) + self.assertEqual(detected_object.world_object, self.milk) # Skipped since open and close work only in the apartment at the moment @unittest.skip @@ -120,7 +121,8 @@ def test_transport(self): action_designator.MoveTorsoAction([0.2]).resolve().perform() description.resolve().perform() self.assertEqual(description.ground().object_designator.name, "milk") - dist = np.linalg.norm(np.array(self.milk.get_pose().position_as_list()) - np.array([-1.35, 0.78, 0.95])) + milk_position = np.array(self.milk.get_pose().position_as_list()) + dist = np.linalg.norm(milk_position - np.array([-1.35, 0.78, 0.95])) self.assertTrue(dist < 0.01) def test_grasping(self): @@ -131,10 +133,16 @@ def test_grasping(self): with simulated_robot: description.resolve().perform() dist = np.linalg.norm( - np.array(self.robot.get_link_pose(robot_description.get_tool_frame("right")).position_as_list()) - - np.array(self.milk.get_pose().position_as_list())) + np.array(self.robot.get_link_position_as_list(robot_description.get_tool_frame("right"))) - + np.array(self.milk.get_position_as_list())) self.assertTrue(dist < 0.01) + def test_facing(self): + with simulated_robot: + FaceAtPerformable(self.milk.pose).perform() + milk_in_robot_frame = LocalTransformer().transform_to_object_frame(self.milk.pose, self.robot) + self.assertAlmostEqual(milk_in_robot_frame.position.y, 0.) + if __name__ == '__main__': unittest.main() diff --git a/test/test_attachment.py b/test/test_attachment.py new file mode 100644 index 000000000..30b29790c --- /dev/null +++ b/test/test_attachment.py @@ -0,0 +1,93 @@ +import time + +from bullet_world_testcase import BulletWorldTestCase +from pycram.datastructures.enums import ObjectType +from pycram.datastructures.pose import Pose +from pycram.world_concepts.world_object import Object + + +class TestAttachment(BulletWorldTestCase): + + def test_attach(self): + self.milk.attach(self.robot) + self.assertTrue(self.milk.attachments[self.robot]) + self.assertTrue(self.robot.attachments[self.milk]) + + def test_detach(self): + self.milk.attach(self.robot) + self.milk.detach(self.robot) + self.assertTrue(self.robot not in self.milk.attachments) + self.assertTrue(self.milk not in self.robot.attachments) + + def test_attachment_behavior(self): + self.robot.attach(self.milk) + + milk_pos = self.milk.get_position() + rob_pos = self.robot.get_position() + + rob_pos.x += 1 + self.robot.set_position(rob_pos) + + new_milk_pos = self.milk.get_position() + self.assertEqual(new_milk_pos.x, milk_pos.x + 1) + + def test_detachment_behavior(self): + self.robot.attach(self.milk) + + milk_pos = self.milk.get_position() + rob_pos = self.robot.get_position() + + self.robot.detach(self.milk) + rob_pos.x += 1 + self.robot.set_position(rob_pos) + + new_milk_pos = self.milk.get_position() + self.assertEqual(new_milk_pos.x, milk_pos.x) + + def test_prospection_object_attachments_not_changed_with_real_object(self): + milk_2 = Object("milk_2", ObjectType.MILK, "milk.stl", pose=Pose([1.3, 1, 0.9])) + cereal_2 = Object("cereal_2", ObjectType.BREAKFAST_CEREAL, "breakfast_cereal.stl", + pose=Pose([1.3, 0.7, 0.95])) + time.sleep(0.05) + milk_2.attach(cereal_2) + time.sleep(0.05) + prospection_milk = self.world.get_prospection_object_for_object(milk_2) + self.assertTrue(cereal_2 not in prospection_milk.attachments) + prospection_cereal = self.world.get_prospection_object_for_object(cereal_2) + self.assertTrue(prospection_cereal in prospection_milk.attachments) + + # Assert that when prospection object is moved, the real object is not moved + prospection_milk_pos = prospection_milk.get_position() + cereal_pos = cereal_2.get_position() + prospection_cereal_pos = prospection_cereal.get_position() + + # Move prospection milk object + prospection_milk_pos.x += 1 + prospection_milk.set_position(prospection_milk_pos) + + # Prospection Cereal object should move with prospection milk object + assumed_prospection_cereal_pos = prospection_cereal_pos + assumed_prospection_cereal_pos.x += 1 + new_prospection_cereal_pos = prospection_cereal.get_position() + self.assertTrue(new_prospection_cereal_pos == assumed_prospection_cereal_pos) + + # Real cereal object should not move + new_cereal_pos = cereal_2.get_position() + assumed_cereal_pos = cereal_pos + self.assertTrue(new_cereal_pos == assumed_cereal_pos) + + self.world.remove_object(milk_2) + self.world.remove_object(cereal_2) + + def test_attaching_to_robot_and_moving(self): + self.robot.attach(self.milk) + milk_pos = self.milk.get_position() + rob_pos = self.robot.get_position() + + rob_pos.x += 1 + self.robot.set_position(rob_pos) + + new_milk_pos = self.milk.get_position() + self.assertEqual(new_milk_pos.x, milk_pos.x + 1) + + diff --git a/test/test_bullet_world.py b/test/test_bullet_world.py index c4144ff09..0c9cad689 100644 --- a/test/test_bullet_world.py +++ b/test/test_bullet_world.py @@ -1,27 +1,252 @@ +import time import unittest +import xml.etree.ElementTree as ET import rospkg -from bullet_world_testcase import BulletWorldTestCase -from pycram.pose import Pose -import numpy as np -from pycram.bullet_world import fix_missing_inertial -import xml.etree.ElementTree as ET +from bullet_world_testcase import BulletWorldTestCase, BulletWorldGUITestCase +from pycram.datastructures.enums import ObjectType, WorldMode +from pycram.datastructures.pose import Pose +from pycram.robot_descriptions import robot_description +from pycram.object_descriptors.urdf import ObjectDescription +from pycram.datastructures.dataclasses import Color +from pycram.world_concepts.world_object import Object + +fix_missing_inertial = ObjectDescription.fix_missing_inertial class BulletWorldTest(BulletWorldTestCase): def test_object_movement(self): self.milk.set_position(Pose([0, 1, 1])) - self.assertEqual(self.milk.get_pose().position_as_list(), [0, 1, 1]) + self.assertEqual(self.milk.get_position_as_list(), [0, 1, 1]) def test_robot_orientation(self): self.robot.set_pose(Pose([0, 1, 1])) head_position = self.robot.get_link_position('head_pan_link').z - #self.robot.set_orientation(list(2*tf.transformations.quaternion_from_euler(0, 0, np.pi, axes="sxyz"))) self.robot.set_orientation(Pose(orientation=[0, 0, 1, 1])) self.assertEqual(self.robot.get_link_position('head_pan_link').z, head_position) + def test_save_and_restore_state(self): + self.robot.attach(self.milk) + self.milk.attach(self.cereal) + all_object_attachments = {obj: obj.attachments.copy() for obj in self.world.objects} + state_id = self.world.save_state() + self.milk.detach(self.cereal) + robot_link = self.robot.root_link + milk_link = self.milk.root_link + cid = robot_link.constraint_ids[milk_link] + self.assertTrue(cid == self.robot.attachments[self.milk].id) + self.world.remove_constraint(cid) + self.world.restore_state(state_id) + cid = robot_link.constraint_ids[milk_link] + self.assertTrue(milk_link in robot_link.constraint_ids) + self.assertTrue(cid == self.robot.attachments[self.milk].id) + for obj in self.world.objects: + self.assertTrue(len(obj.attachments) == len(all_object_attachments[obj])) + for att in obj.attachments: + self.assertTrue(att in all_object_attachments[obj]) + + def test_remove_object(self): + milk_id = self.milk.id + self.assertTrue(milk_id in [obj.id for obj in self.world.objects]) + self.world.remove_object(self.milk) + self.assertTrue(milk_id not in [obj.id for obj in self.world.objects]) + BulletWorldTest.milk = Object("milk", ObjectType.MILK, "milk.stl", + ObjectDescription, pose=Pose([1.3, 1, 0.9])) + + def test_remove_robot(self): + robot_id = self.robot.id + self.assertTrue(robot_id in [obj.id for obj in self.world.objects]) + self.world.remove_object(self.robot) + self.assertTrue(robot_id not in [obj.id for obj in self.world.objects]) + BulletWorldTest.robot = Object(robot_description.name, ObjectType.ROBOT, + robot_description.name + self.extension) + + def test_get_joint_position(self): + self.assertEqual(self.robot.get_joint_position("head_pan_joint"), 0.0) + + def test_get_object_contact_points(self): + self.assertEqual(len(self.robot.contact_points()), 0) + self.milk.set_position(self.robot.get_position()) + self.assertTrue(len(self.robot.contact_points()) > 0) + + def test_enable_joint_force_torque_sensor(self): + self.world.enable_joint_force_torque_sensor(self.robot, self.robot.get_joint_id("head_pan_joint")) + force_torque = self.world.get_joint_reaction_force_torque(self.robot, self.robot.get_joint_id("head_pan_joint")) + # TODO: useless because even if the sensor is disabled, the force_torque is still 0 + for ft in force_torque: + self.assertTrue(ft == 0.0) + + def test_disable_joint_force_torque_sensor(self): + self.world.enable_joint_force_torque_sensor(self.robot, self.robot.get_joint_id("head_pan_joint")) + self.world.disable_joint_force_torque_sensor(self.robot, self.robot.get_joint_id("head_pan_joint")) + force_torque = self.world.get_joint_reaction_force_torque(self.robot, self.robot.get_joint_id("head_pan_joint")) + for ft in force_torque: + self.assertTrue(ft == 0.0) + + def test_get_applied_joint_motor_torque(self): + self.world.get_applied_joint_motor_torque(self.robot, self.robot.get_joint_id("head_pan_joint")) + + def test_step_simulation(self): + # TODO: kitchen explodes when stepping simulation, fix this + self.kitchen.set_position([100, 100, 0]) + self.milk.set_position(Pose([0, 0, 2])) + self.world.simulate(1) + self.assertTrue(self.milk.get_position().z < 2) + + @unittest.skip + def test_set_real_time_simulation(self): + self.milk.set_position(Pose([100, 0, 2])) + curr_time = time.time() + self.world.simulate(0.5, real_time=True) + time_elapsed = time.time() - curr_time + self.assertAlmostEqual(time_elapsed, 0.5, delta=0.2) + + def test_collision_callback(self): + self.kitchen.set_position([100, 100, 0]) + self.collision_called = False + self.no_collision_called = False + + def collision_callback(): + self.collision_called = True + + def no_collision_callback(): + self.no_collision_called = True + + self.world.register_two_objects_collision_callbacks(self.milk, self.cereal, + collision_callback, no_collision_callback) + + self.world.simulate(1) + self.assertTrue(self.no_collision_called) + self.assertFalse(self.collision_called) + + self.collision_called = False + self.no_collision_called = False + + new_milk_position = self.cereal.get_position() + new_milk_position.z += 0.5 + self.milk.set_position(new_milk_position) + + self.world.simulate(4) + self.assertTrue(self.collision_called) + + def test_equal_world_states(self): + time.sleep(2.5) + self.robot.set_pose(Pose([1, 0, 0], [0, 0, 0, 1])) + self.assertFalse(self.world.world_sync.check_for_equal()) + self.world.prospection_world.object_states = self.world.current_state.object_states + time.sleep(0.05) + self.assertTrue(self.world.world_sync.check_for_equal()) + + def test_add_resource_path(self): + self.world.add_resource_path("test") + self.assertTrue("test" in self.world.data_directory) + + def test_no_prospection_object_found_for_given_object(self): + milk_2 = Object("milk_2", ObjectType.MILK, "milk.stl", pose=Pose([1.3, 1, 0.9])) + time.sleep(0.05) + try: + prospection_milk_2 = self.world.get_prospection_object_for_object(milk_2) + self.world.remove_object(milk_2) + time.sleep(0.1) + self.world.get_prospection_object_for_object(milk_2) + self.assertFalse(True) + except ValueError as e: + self.assertTrue(True) + + def test_no_object_found_for_given_prospection_object(self): + milk_2 = Object("milk_2", ObjectType.MILK, "milk.stl", pose=Pose([1.3, 1, 0.9])) + time.sleep(0.05) + prospection_milk = self.world.get_prospection_object_for_object(milk_2) + self.assertTrue(self.world.get_object_for_prospection_object(prospection_milk) == milk_2) + try: + self.world.remove_object(milk_2) + self.world.get_object_for_prospection_object(prospection_milk) + time.sleep(0.1) + self.assertFalse(True) + except ValueError as e: + self.assertTrue(True) + time.sleep(0.05) + + def test_real_object_position_does_not_change_with_prospection_object(self): + milk_2_pos = [1.3, 1, 0.9] + milk_2 = Object("milk_2", ObjectType.MILK, "milk.stl", pose=Pose(milk_2_pos)) + time.sleep(0.05) + milk_2_pos = milk_2.get_position() + prospection_milk = self.world.get_prospection_object_for_object(milk_2) + prospection_milk_pos = prospection_milk.get_position() + self.assertTrue(prospection_milk_pos == milk_2_pos) + + # Assert that when prospection object is moved, the real object is not moved + prospection_milk_pos.x += 1 + prospection_milk.set_position(prospection_milk_pos) + self.assertTrue(prospection_milk.get_position() != milk_2.get_position()) + self.world.remove_object(milk_2) + + def test_prospection_object_position_does_not_change_with_real_object(self): + milk_2_pos = [1.3, 1, 0.9] + milk_2 = Object("milk_2", ObjectType.MILK, "milk.stl", pose=Pose(milk_2_pos)) + time.sleep(0.05) + milk_2_pos = milk_2.get_position() + prospection_milk = self.world.get_prospection_object_for_object(milk_2) + prospection_milk_pos = prospection_milk.get_position() + self.assertTrue(prospection_milk_pos == milk_2_pos) + + # Assert that when real object is moved, the prospection object is not moved + milk_2_pos.x += 1 + milk_2.set_position(milk_2_pos) + self.assertTrue(prospection_milk.get_position() != milk_2.get_position()) + self.world.remove_object(milk_2) + + def test_add_vis_axis(self): + self.world.add_vis_axis(self.robot.get_link_pose(robot_description.get_camera_frame())) + self.assertTrue(len(self.world.vis_axis) == 1) + self.world.remove_vis_axis() + self.assertTrue(len(self.world.vis_axis) == 0) + + def test_add_text(self): + link: ObjectDescription.Link = self.robot.get_link(robot_description.get_camera_frame()) + text_id = self.world.add_text("test", link.position_as_list, link.orientation_as_list, 1, + Color(1, 0, 0, 1), 3, link.object_id, link.id) + if self.world.mode == WorldMode.GUI: + time.sleep(4) + + def test_remove_text(self): + link: ObjectDescription.Link = self.robot.get_link(robot_description.get_camera_frame()) + text_id_1 = self.world.add_text("test 1", link.pose.position_as_list(), link.pose.orientation_as_list(), 1, + Color(1, 0, 0, 1), 0, link.object_id, link.id) + text_id = self.world.add_text("test 2", link.pose.position_as_list(), link.pose.orientation_as_list(), 1, + Color(0, 1, 0, 1), 0, link.object_id, link.id) + + if self.world.mode == WorldMode.GUI: + time.sleep(2) + self.world.remove_text(text_id_1) + if self.world.mode == WorldMode.GUI: + time.sleep(3) + + def test_remove_all_text(self): + link: ObjectDescription.Link = self.robot.get_link(robot_description.get_camera_frame()) + text_id_1 = self.world.add_text("test 1", link.pose.position_as_list(), link.pose.orientation_as_list(), 1, + Color(1, 0, 0, 1), 0, link.object_id, link.id) + text_id = self.world.add_text("test 2", link.pose.position_as_list(), link.pose.orientation_as_list(), 1, + Color(0, 1, 0, 1), 0, link.object_id, link.id) + if self.world.mode == WorldMode.GUI: + time.sleep(2) + self.world.remove_text() + if self.world.mode == WorldMode.GUI: + time.sleep(3) + + +@unittest.skip("Not working in CI") +class BulletWorldTestGUI(BulletWorldGUITestCase): + def test_add_vis_axis(self): + time.sleep(10) + self.world.add_vis_axis(self.robot.get_link_pose(robot_description.get_camera_frame())) + self.assertTrue(len(self.world.vis_axis) == 1) + self.world.remove_vis_axis() + self.assertTrue(len(self.world.vis_axis) == 0) + class XMLTester(unittest.TestCase): @@ -36,4 +261,3 @@ def test_inertial(self): resulting_tree = ET.ElementTree(ET.fromstring(result)) for element in resulting_tree.iter("link"): self.assertTrue(len([*element.iter("inertial")]) > 0) - diff --git a/test/test_bullet_world_reasoning.py b/test/test_bullet_world_reasoning.py index 2ddf5455b..660c9682b 100644 --- a/test/test_bullet_world_reasoning.py +++ b/test/test_bullet_world_reasoning.py @@ -1,10 +1,12 @@ import time +import pycram.world_reasoning as btr from bullet_world_testcase import BulletWorldTestCase -import pycram.bullet_world_reasoning as btr -from pycram.pose import Pose +from pycram.datastructures.pose import Pose from pycram.robot_descriptions import robot_description +use_new = True + class TestCaseBulletWorldReasoning(BulletWorldTestCase): @@ -18,7 +20,9 @@ def test_visible(self): self.milk.set_pose(Pose([1.5, 0, 1.2])) self.robot.set_pose(Pose()) time.sleep(1) - self.assertTrue(btr.visible(self.milk, self.robot.get_link_pose(robot_description.get_camera_frame()), + camera_frame = robot_description.get_camera_frame() + self.world.add_vis_axis(self.robot.get_link_pose(camera_frame)) + self.assertTrue(btr.visible(self.milk, self.robot.get_link_pose(camera_frame), robot_description.front_facing_axis)) def test_occluding(self): @@ -29,6 +33,7 @@ def test_occluding(self): def test_reachable(self): self.robot.set_pose(Pose()) + time.sleep(1) self.assertTrue(btr.reachable(Pose([0.5, -0.7, 1]), self.robot, robot_description.get_tool_frame("right"))) self.assertFalse(btr.reachable(Pose([2, 2, 1]), self.robot, robot_description.get_tool_frame("right"))) diff --git a/test/test_cache_manager.py b/test/test_cache_manager.py new file mode 100644 index 000000000..bad803f22 --- /dev/null +++ b/test/test_cache_manager.py @@ -0,0 +1,20 @@ +from pathlib import Path + +from bullet_world_testcase import BulletWorldTestCase +from pycram.datastructures.enums import ObjectType +from pycram.world_concepts.world_object import Object +import pathlib + + +class TestCacheManager(BulletWorldTestCase): + + def test_generate_description_and_write_to_cache(self): + cache_manager = self.world.cache_manager + file_path = pathlib.Path(__file__).parent.resolve() + path = str(file_path) + "/../resources/apartment.urdf" + extension = Path(path).suffix + cache_path = self.world.cache_dir + "apartment.urdf" + apartment = Object("apartment", ObjectType.ENVIRONMENT, path) + cache_manager.generate_description_and_write_to_cache(path, apartment.name, extension, cache_path, + apartment.description) + self.assertTrue(cache_manager.is_cached(path, apartment.description)) diff --git a/test/test_costmaps.py b/test/test_costmaps.py index 457bbd577..0623645cc 100644 --- a/test/test_costmaps.py +++ b/test/test_costmaps.py @@ -1,7 +1,12 @@ +import numpy as np +from random_events.variables import Continuous +# import plotly.graph_objects as go +import portion +from random_events.events import Event, ComplexEvent + from bullet_world_testcase import BulletWorldTestCase from pycram.costmaps import OccupancyCostmap -from pycram.pose import Pose -import numpy as np +from pycram.datastructures.pose import Pose class TestCostmapsCase(BulletWorldTestCase): @@ -16,9 +21,37 @@ def test_attachment_exclusion(self): self.robot.set_pose(Pose([0, 0, 0])) self.milk.set_pose(Pose([0.5, 0, 1])) self.cereal.set_pose(Pose([50, 50, 0])) - o = OccupancyCostmap(0.2, from_ros=False, size=200, resolution=0.02, origin=Pose([0, 0, 0], [0, 0, 0, 1])) - self.assertEquals(np.sum(o.map[115:135, 90:110]), 0) + o = OccupancyCostmap(0.2, from_ros=False, size=200, resolution=0.02, + origin=Pose([0, 0, 0], [0, 0, 0, 1])) + self.assertEqual(np.sum(o.map[115:135, 90:110]), 0) self.robot.attach(self.milk) self.assertTrue(np.sum(o.map[80:90, 90:110]) != 0) + def test_partition_into_rectangles(self): + ocm = OccupancyCostmap(distance_to_obstacle=0.2, from_ros=False, size=200, resolution=0.02, + origin=Pose([0, 0, 0], [0, 0, 0, 1])) + rectangles = ocm.partitioning_rectangles() + ocm.visualize() + + x = Continuous("x") + y = Continuous("y") + + events = [] + for rectangle in rectangles: + + event = Event({x: portion.open(rectangle.x_lower, rectangle.x_upper), + y: portion.open(rectangle.y_lower, rectangle.y_upper)}) + events.append(event) + + event = ComplexEvent(events) + # fig = go.Figure(event.plot(), event.plotly_layout()) + # fig.update_xaxes(range=[-2, 2]) + # fig.update_yaxes(range=[-2, 2]) + # fig.show() + self.assertTrue(event.are_events_disjoint()) + + def test_visualize(self): + o = OccupancyCostmap(0.2, from_ros=False, size=200, resolution=0.02, + origin=Pose([0, 0, 0], [0, 0, 0, 1])) + o.visualize() diff --git a/test/test_database_merger.py b/test/test_database_merger.py index f3e8b0472..4d00b1fa6 100644 --- a/test/test_database_merger.py +++ b/test/test_database_merger.py @@ -8,10 +8,11 @@ from pycram.designators.action_designator import * from pycram.designators.location_designator import * from pycram.process_module import simulated_robot -from pycram.enums import Arms, ObjectType +from pycram.datastructures.enums import Arms, ObjectType, WorldMode from pycram.task import with_tree import pycram.task -from pycram.bullet_world import Object +from pycram.worlds.bullet_world import BulletWorld +from pycram.world_concepts.world_object import Object from pycram.designators.object_designator import * from dataclasses import dataclass, field @@ -27,7 +28,7 @@ class Configuration: class ExamplePlans: def __init__(self): - self.world = BulletWorld("DIRECT") + self.world = BulletWorld(WorldMode.DIRECT) self.pr2 = Object("pr2", ObjectType.ROBOT, "pr2.urdf") self.kitchen = Object("kitchen", ObjectType.ENVIRONMENT, "kitchen.urdf") self.milk = Object("milk", ObjectType.MILK, "milk.stl", pose=Pose([1.3, 1, 0.9])) @@ -40,7 +41,7 @@ def __init__(self): @with_tree def pick_and_place_plan(self): with simulated_robot: - ParkArmsAction.Action(Arms.BOTH).perform() + ParkArmsActionPerformable(Arms.BOTH).perform() MoveTorsoAction([0.3]).resolve().perform() pickup_pose = CostmapLocation(target=self.cereal_desig.resolve(), reachable_for=self.robot_desig).resolve() pickup_arm = pickup_pose.reachable_arms[0] @@ -59,7 +60,7 @@ def pick_and_place_plan(self): PlaceAction(self.cereal_desig, target_locations=[place_island.pose], arms=[pickup_arm]).resolve().perform() - ParkArmsAction.Action(Arms.BOTH).perform() + ParkArmsActionPerformable(Arms.BOTH).perform() class MergerTestCaseBase(unittest.TestCase): @@ -92,19 +93,17 @@ def setUpClass(cls) -> None: cls.source_engine = sqlalchemy.create_engine("sqlite+pysqlite:///:memory:", echo=False) cls.source_session_maker = sqlalchemy.orm.sessionmaker(bind=cls.source_engine) cls.destination_session_maker = sqlalchemy.orm.sessionmaker(bind=cls.destination_engine) - source_session = cls.source_session_maker() destination_session = cls.destination_session_maker() - pycram.orm.base.Base.metadata.create_all(cls.source_engine) pycram.orm.base.Base.metadata.create_all(cls.destination_engine) - source_session.commit() destination_session.commit() - source_session.close() destination_session.close() cls.numbers_of_example_runs = 3 def setUp(self) -> None: super().setUp() source_session = self.source_session_maker() + # If there is no session (connection to the memory database) it resets thus we need to define this here + pycram.orm.base.Base.metadata.create_all(self.source_engine) example_plans = ExamplePlans() for i in range(self.numbers_of_example_runs): try: @@ -151,7 +150,7 @@ def test_merge_databases(self): self.assertEqual(destination_content[key], destination_content[key].union(source_content[key])) def test_migrate_neems(self): - pycram.orm.utils.migrate_neems(self.source_session_maker,self.destination_session_maker) + pycram.orm.utils.migrate_neems(self.source_session_maker, self.destination_session_maker) destination_content = dict() source_content = dict() with self.destination_session_maker() as session: diff --git a/test/test_database_resolver.py b/test/test_database_resolver.py index a9103bd0a..e6021ef60 100644 --- a/test/test_database_resolver.py +++ b/test/test_database_resolver.py @@ -1,27 +1,25 @@ import os +import time import unittest import sqlalchemy import sqlalchemy.orm import pycram.plan_failures +from pycram.world_concepts.world_object import Object from pycram import task -from pycram.bullet_world import BulletWorld, Object -from pycram.designators import action_designator, object_designator +from pycram.world import World +from pycram.designators import action_designator +from pycram.designators.actions.actions import MoveTorsoActionPerformable, PickUpActionPerformable, \ + NavigateActionPerformable, PlaceActionPerformable from pycram.orm.base import Base +from pycram.designators.object_designator import ObjectDesignatorDescription from pycram.process_module import ProcessModule from pycram.process_module import simulated_robot -from pycram.pose import Pose +from pycram.datastructures.pose import Pose from pycram.robot_descriptions import robot_description from pycram.task import with_tree -from pycram.enums import ObjectType - -# check if jpt is installed -jpt_installed = True -try: - import jpt - from pycram.resolver.location.database_location import DatabaseCostmapLocation -except ImportError: - jpt_installed = False - +from pycram.datastructures.enums import ObjectType, WorldMode +from pycram.resolver.location.database_location import DatabaseCostmapLocation +from pycram.worlds.bullet_world import BulletWorld pycrorm_uri = os.getenv('PYCRORM_URI') if pycrorm_uri: @@ -29,10 +27,8 @@ @unittest.skipIf(pycrorm_uri is None, "pycrorm database is not available.") -@unittest.skipIf(not jpt_installed, "jpt is not installed but needed for the definition of DatabaseCostmapLocations. " - "Install via 'pip install pyjpt'") class DatabaseResolverTestCase(unittest.TestCase,): - world: BulletWorld + world: World milk: Object robot: Object engine: sqlalchemy.engine.Engine @@ -41,36 +37,38 @@ class DatabaseResolverTestCase(unittest.TestCase,): @classmethod def setUpClass(cls) -> None: global pycrorm_uri - cls.world = BulletWorld("DIRECT") - cls.milk = Object("milk", "milk", "milk.stl", pose=Pose([1.3, 1, 0.9])) + cls.world = BulletWorld(WorldMode.DIRECT) + cls.milk = Object("milk", ObjectType.MILK, "milk.stl", pose=Pose([1.3, 1, 0.9])) cls.robot = Object(robot_description.name, ObjectType.ROBOT, robot_description.name + ".urdf") ProcessModule.execution_delay = False cls.engine = sqlalchemy.create_engine(pycrorm_uri) - cls.session = sqlalchemy.orm.Session(bind=cls.engine) def setUp(self) -> None: - self.world.reset_bullet_world() + self.world.reset_world() pycram.orm.base.Base.metadata.create_all(self.engine) + self.session = sqlalchemy.orm.Session(bind=self.engine) self.session.commit() def tearDown(self) -> None: - self.world.reset_bullet_world() + self.world.reset_world() pycram.task.reset_tree() + pycram.orm.base.ProcessMetaData.reset() + self.session.rollback() + pycram.orm.base.Base.metadata.drop_all(self.engine) + self.session.close() @classmethod def tearDownClass(cls) -> None: cls.world.exit() - cls.session.commit() - cls.session.close() @with_tree def plan(self): - object_description = object_designator.ObjectDesignatorDescription(names=["milk"]) + object_description = ObjectDesignatorDescription(names=["milk"]) description = action_designator.PlaceAction(object_description, [Pose([1.3, 1, 0.9], [0, 0, 0, 1])], ["left"]) with simulated_robot: - action_designator.NavigateAction.Action(Pose([0.6, 0.4, 0], [0, 0, 0, 1])).perform() - action_designator.MoveTorsoAction.Action(0.3).perform() - action_designator.PickUpAction.Action(object_description.resolve(), "left", "front").perform() + NavigateActionPerformable(Pose([0.6, 0.4, 0], [0, 0, 0, 1])).perform() + MoveTorsoActionPerformable(0.3).perform() + PickUpActionPerformable(object_description.resolve(), "left", "front").perform() description.resolve().perform() def test_costmap_no_obstacles(self): @@ -83,31 +81,111 @@ def test_costmap_no_obstacles(self): sample = next(iter(cml)) with simulated_robot: - # action_designator.NavigateAction.Action(sample.pose).perform() - action_designator.MoveTorsoAction.Action(sample.torso_height).perform() - action_designator.PickUpAction.Action( - object_designator.ObjectDesignatorDescription(types=["milk"]).resolve(), - arm=sample.reachable_arm, grasp=sample.grasp).perform() + MoveTorsoActionPerformable(sample.torso_height).perform() + PickUpActionPerformable(ObjectDesignatorDescription(types=[ObjectType.MILK]).resolve(), arm=sample.reachable_arm, + grasp=sample.grasp).perform() - @unittest.skip def test_costmap_with_obstacles(self): - kitchen = Object("kitchen", "environment", "kitchen.urdf") + kitchen = Object("kitchen", ObjectType.ENVIRONMENT, "kitchen.urdf") + self.plan() + pycram.orm.base.ProcessMetaData().description = "costmap_with_obstacles_test" + pycram.task.task_tree.root.insert(self.session) + self.world.reset_current_world() cml = DatabaseCostmapLocation(self.milk, self.session, reachable_for=self.robot) + sample = next(iter(cml)) + + with simulated_robot: + NavigateActionPerformable(sample.pose).perform() + MoveTorsoActionPerformable(sample.torso_height).perform() + try: + PickUpActionPerformable( + ObjectDesignatorDescription(types=[ObjectType.MILK]).resolve(), + arm=sample.reachable_arm, grasp=sample.grasp).perform() + except pycram.plan_failures.PlanFailure as p: + kitchen.remove() + raise p + kitchen.remove() + + def test_object_at_different_location(self): + kitchen = Object("kitchen", ObjectType.ENVIRONMENT, "kitchen.urdf") + self.plan() + + pycram.orm.base.ProcessMetaData().description = "object_at_different_location_test" + pycram.task.task_tree.root.insert(self.session) + self.world.reset_current_world() + + new_milk = Object("new_milk", ObjectType.MILK, "milk.stl", pose=Pose([-1.45, 2.5, 0.95])) + cml = DatabaseCostmapLocation(new_milk, self.session, reachable_for=self.robot) - for i in range(20): - sample = next(iter(cml)) - with simulated_robot: - action_designator.NavigateAction.Action(sample.pose).perform() - action_designator.MoveTorsoAction.Action(sample.torso_height).perform() + sample = next(iter(cml)) + with simulated_robot: + NavigateActionPerformable(sample.pose).perform() + MoveTorsoActionPerformable(sample.torso_height).perform() + try: + PickUpActionPerformable( + ObjectDesignatorDescription(names=["new_milk"], types=[ObjectType.MILK]).resolve(), + arm=sample.reachable_arm, grasp=sample.grasp).perform() + except pycram.plan_failures.PlanFailure as p: + new_milk.remove() + kitchen.remove() + raise p + PlaceActionPerformable(ObjectDesignatorDescription(names=["new_milk"], types=[ObjectType.MILK]).resolve(), + arm=sample.reachable_arm, target_location=Pose([-1.45, 2.5, 0.95])).perform() + new_milk.remove() + kitchen.remove() + + @unittest.skip + def test_multiple_objects(self): + kitchen = Object("kitchen", ObjectType.ENVIRONMENT, "kitchen.urdf") + new_milk = Object("new_milk", ObjectType.MILK, "milk.stl", pose=Pose([-1.45, 2.5, 0.9])) + + object_description = ObjectDesignatorDescription(names=["milk"]) + object_description_new_milk = ObjectDesignatorDescription(names=["new_milk"]) + description = action_designator.PlaceAction(object_description_new_milk, [Pose([-1.45, 2.5, 0.9], [0, 0, 0, 1])], ["left"]) + with simulated_robot: + NavigateActionPerformable(Pose([1, 0.4, 0], [0, 0, 0, 1])).perform() + MoveTorsoActionPerformable(0.3).perform() + PickUpActionPerformable(object_description.resolve(), "left", "front").perform() + PlaceActionPerformable(object_description.resolve(), "left", Pose([1.3, 1, 0.9], [0, 0, 0, 1])).perform() + NavigateActionPerformable(Pose([-1.75, 1.9, 0], [0, 0, 0, 1])).perform() + PickUpActionPerformable(object_description_new_milk.resolve(), "left", "front").perform() + description.resolve().perform() + + pycram.orm.base.ProcessMetaData().description = "multiple_objects_test" + pycram.task.task_tree.root.insert(self.session) + self.world.reset_current_world() + + cml = DatabaseCostmapLocation(self.milk, self.session, reachable_for=self.robot) + cml_new_milk = DatabaseCostmapLocation(new_milk, self.session, reachable_for=self.robot) + + dcls = [cml, cml_new_milk] + for dcl in dcls: + sample = next(iter(dcl)) + with (simulated_robot): + NavigateActionPerformable(sample.pose).perform() + MoveTorsoActionPerformable(sample.torso_height).perform() try: - action_designator.PickUpAction.Action( - object_designator.ObjectDesignatorDescription(types=["milk"]).resolve(), - arm=sample.reachable_arm, grasp=sample.grasp).perform() - except pycram.plan_failures.PlanFailure: - continue - return - raise pycram.plan_failures.PlanFailure() + if dcl.target.name == "milk": + PickUpActionPerformable( + ObjectDesignatorDescription(names=["milk"], types=[ObjectType.MILK]).resolve(), + arm=sample.reachable_arm, grasp=sample.grasp).perform() + else: + PickUpActionPerformable( + ObjectDesignatorDescription(names=["new_milk"], types=[ObjectType.MILK]).resolve(), + arm=sample.reachable_arm, grasp=sample.grasp).perform() + except pycram.plan_failures.PlanFailure as p: + new_milk.remove() + kitchen.remove() + raise p + PlaceActionPerformable(ObjectDesignatorDescription(names=[dcl.target.name], + types=[ObjectType.MILK]).resolve(), + arm=sample.reachable_arm, target_location=Pose([dcl.target.pose.position.x, + dcl.target.pose.position.y, + dcl.target.pose.position.z]) + ).perform() + new_milk.remove() + kitchen.remove() if __name__ == '__main__': diff --git a/test/test_description.py b/test/test_description.py new file mode 100644 index 000000000..a0d12b3b2 --- /dev/null +++ b/test/test_description.py @@ -0,0 +1,31 @@ +import pathlib + +from bullet_world_testcase import BulletWorldTestCase + + +class DescriptionTest(BulletWorldTestCase): + def test_is_root(self): + self.assertTrue(self.robot.root_link.is_root) + self.assertFalse(self.robot.links["base_link"].is_root) + + def test_orientation_as_list(self): + base_link = self.robot.links["base_link"] + self.assertEqual(base_link.orientation_as_list, base_link.pose.orientation_as_list()) + + def test_pose_as_list(self): + base_link = self.robot.links["base_link"] + self.assertEqual(base_link.pose_as_list, base_link.pose.to_list()) + + def test_joint_child_link(self): + self.assertEqual(self.robot.get_joint_child_link("base_footprint_joint"), self.robot.get_link("base_link")) + self.assertEqual(self.robot.get_joint_parent_link("base_footprint_joint"), self.robot.root_link) + + def test_generate_description_from_mesh(self): + file_path = pathlib.Path(__file__).parent.resolve() + self.assertTrue(self.milk.description.generate_description_from_file(str(file_path) + "/../resources/cached/milk.stl", + "milk", ".stl")) + + def test_generate_description_from_description_file(self): + file_path = pathlib.Path(__file__).parent.resolve() + self.assertTrue(self.milk.description.generate_description_from_file(str(file_path) + "/../resources/cached/milk.urdf", + "milk", ".urdf")) diff --git a/test/test_failure_handling.py b/test/test_failure_handling.py index ab0a8491b..9008431e6 100644 --- a/test/test_failure_handling.py +++ b/test/test_failure_handling.py @@ -2,14 +2,17 @@ import roslaunch -from pycram.bullet_world import BulletWorld, Object +from pycram.worlds.bullet_world import BulletWorld, Object from pycram.designator import ActionDesignatorDescription from pycram.designators.action_designator import ParkArmsAction -from pycram.enums import ObjectType, Arms +from pycram.datastructures.enums import ObjectType, Arms, WorldMode from pycram.failure_handling import Retry from pycram.plan_failures import PlanFailure from pycram.process_module import ProcessModule, simulated_robot from pycram.robot_descriptions import robot_description +from pycram.object_descriptors.urdf import ObjectDescription + +extension = ObjectDescription.get_file_extension() # start ik_and_description.launch @@ -29,12 +32,13 @@ class FailureHandlingTest(unittest.TestCase): @classmethod def setUpClass(cls): - cls.world = BulletWorld("DIRECT") - cls.robot = Object(robot_description.name, ObjectType.ROBOT, robot_description.name + ".urdf") + cls.world = BulletWorld(WorldMode.DIRECT) + cls.robot = Object(robot_description.name, ObjectType.ROBOT, robot_description.name + extension, + ObjectDescription) ProcessModule.execution_delay = True def setUp(self): - self.world.reset_bullet_world() + self.world.reset_world() def test_retry_with_success(self): with simulated_robot: @@ -46,7 +50,7 @@ def test_retry_with_failure(self): Retry(DummyActionDesignator(), max_tries=5).perform() def tearDown(self): - self.world.reset_bullet_world() + self.world.reset_world() @classmethod def tearDownClass(cls): diff --git a/test/test_jpt_resolver.py b/test/test_jpt_resolver.py deleted file mode 100644 index 98884a0d7..000000000 --- a/test/test_jpt_resolver.py +++ /dev/null @@ -1,100 +0,0 @@ -import os -import unittest - -import numpy as np -import requests - -import pycram.plan_failures -from pycram.bullet_world import BulletWorld, Object -from pycram.designators import action_designator, object_designator -from pycram.process_module import ProcessModule -from pycram.process_module import simulated_robot -from pycram.robot_descriptions import robot_description -from pycram.pose import Pose - -# check if jpt is installed -jpt_installed = True -try: - import jpt - from pycram.resolver.location.jpt_location import JPTCostmapLocation -except ImportError: - jpt_installed = False - -# check if mlflow is installed -mlflow_installed = True -try: - import mlflow -except ImportError: - mlflow_installed = False - -mlflow_uri = os.getenv('MLFLOW_TRACKING_URI') -if mlflow_uri is None: - mlflow_uri = "http://127.0.0.1:5000" - -try: - response = requests.get(mlflow_uri, timeout=2) -except requests.exceptions.ConnectionError: - response = None - - -@unittest.skipIf(response is None or (response.status_code != requests.codes.ok), "mlflow server is not available.") -@unittest.skipIf(not jpt_installed, "jpt is not installed. Install via 'pip install pyjpt'") -@unittest.skipIf(not mlflow_installed, "mlflow is not installed. Install via 'pip install mlflow'") -class JPTResolverTestCase(unittest.TestCase): - world: BulletWorld - milk: Object - robot: Object - model: 'jpt.JPT' - - @classmethod - def setUpClass(cls) -> None: - np.random.seed(420) - cls.model = mlflow.pyfunc.load_model( - model_uri="mlflow-artifacts:/0/9150dd1fb353494d807261928cea6e8c/artifacts/grasping").unwrap_python_model() \ - .model - cls.world = BulletWorld("DIRECT") - cls.milk = Object("milk", "milk", "milk.stl", pose=Pose([3, 3, 0.75])) - cls.robot = Object(robot_description.name, "pr2", robot_description.name + ".urdf") - ProcessModule.execution_delay = False - - def test_costmap_no_obstacles(self): - """Check if grasping a milk in the air works.""" - cml = JPTCostmapLocation(self.milk, reachable_for=self.robot, model=self.model) - sample = next(iter(cml)) - - with simulated_robot: - action_designator.NavigateAction.Action(sample.pose).perform() - action_designator.MoveTorsoAction.Action(sample.torso_height).perform() - action_designator.PickUpAction.Action( - object_designator.ObjectDesignatorDescription(types=["milk"]).resolve(), - arm=sample.reachable_arm, grasp=sample.grasp).perform() - - def test_costmap_with_obstacles(self): - kitchen = Object("kitchen", "environment", "kitchen.urdf") - self.milk.set_pose(Pose([-1.2, 1, 0.98])) - cml = JPTCostmapLocation(self.milk, reachable_for=self.robot, model=self.model) - - for i in range(20): - sample = next(iter(cml)) - with simulated_robot: - action_designator.NavigateAction.Action(sample.pose).perform() - action_designator.MoveTorsoAction.Action(sample.torso_height).perform() - try: - action_designator.PickUpAction.Action( - object_designator.ObjectDesignatorDescription(types=["milk"]).resolve(), - arm=sample.reachable_arm, grasp=sample.grasp).perform() - except pycram.plan_failures.PlanFailure: - continue - return - raise pycram.plan_failures.PlanFailure() - - def tearDown(self) -> None: - self.world.reset_bullet_world() - - @classmethod - def tearDownClass(cls) -> None: - cls.world.exit() - - -if __name__ == '__main__': - unittest.main() diff --git a/test/test_language.py b/test/test_language.py index 951db67c4..10b1319c3 100644 --- a/test/test_language.py +++ b/test/test_language.py @@ -1,16 +1,19 @@ import threading +import time import unittest from pycram.designators.action_designator import * -from pycram.enums import ObjectType, State +from pycram.designators.object_designator import BelieveObject +from pycram.datastructures.enums import ObjectType, State from pycram.fluent import Fluent from pycram.plan_failures import PlanFailure -from pycram.pose import Pose -from pycram.language import Sequential, Language, Parallel, TryAll, TryInOrder, Monitor, Repeat, Code, RenderTree +from pycram.datastructures.pose import Pose +from pycram.language import Sequential, Language, Parallel, TryAll, TryInOrder, Monitor, Code from pycram.process_module import simulated_robot -import test_bullet_world +from bullet_world_testcase import BulletWorldTestCase +from pycram.robot_descriptions import robot_description -class LanguageTestCase(test_bullet_world.BulletWorldTest): +class LanguageTestCase(BulletWorldTestCase): def test_inheritance(self): act = NavigateAction([Pose()]) @@ -144,11 +147,11 @@ def test_perform_desig(self): with simulated_robot: plan.perform() self.assertEqual(self.robot.get_pose(), Pose([1, 1, 0])) - self.assertEqual(self.robot.get_joint_state("torso_lift_joint"), 0.3) + self.assertEqual(self.robot.get_joint_position("torso_lift_joint"), 0.3) for joint, pose in robot_description.get_static_joint_chain("right", "park").items(): - self.assertEqual(self.world.robot.get_joint_state(joint), pose) + self.assertEqual(self.world.robot.get_joint_position(joint), pose) for joint, pose in robot_description.get_static_joint_chain("left", "park").items(): - self.assertEqual(self.world.robot.get_joint_state(joint), pose) + self.assertEqual(self.world.robot.get_joint_position(joint), pose) def test_perform_code(self): def test_set(param): @@ -166,7 +169,7 @@ def test_set(param): def test_perform_parallel(self): def check_thread_id(main_id): - self.assertNotEquals(main_id, threading.get_ident()) + self.assertNotEqual(main_id, threading.get_ident()) act = Code(check_thread_id, {"main_id": threading.get_ident()}) act2 = Code(check_thread_id, {"main_id": threading.get_ident()}) act3 = Code(check_thread_id, {"main_id": threading.get_ident()}) diff --git a/test/test_links.py b/test/test_links.py new file mode 100644 index 000000000..695e670c1 --- /dev/null +++ b/test/test_links.py @@ -0,0 +1,34 @@ +from bullet_world_testcase import BulletWorldTestCase +from pycram.datastructures.dataclasses import Color + + +class TestLinks(BulletWorldTestCase): + + def test_add_constraint(self): + milk_link = self.milk.root_link + robot_link = self.robot.root_link + robot_link.add_fixed_constraint_with_link(milk_link) + self.assertTrue(milk_link in robot_link.constraint_ids) + self.assertTrue(robot_link in milk_link.constraint_ids) + + def test_remove_constraint(self): + milk_link = self.milk.root_link + robot_link = self.robot.root_link + robot_link.add_fixed_constraint_with_link(milk_link) + robot_link.remove_constraint_with_link(milk_link) + self.assertTrue(milk_link not in robot_link.constraint_ids) + self.assertTrue(robot_link not in milk_link.constraint_ids) + + def test_transform_link(self): + milk_link = self.milk.root_link + robot_link = self.robot.root_link + milk_to_robot = milk_link.get_transform_to_link(robot_link) + robot_to_milk = robot_link.get_transform_to_link(milk_link) + self.assertAlmostEqual(robot_to_milk, milk_to_robot.invert()) + + def test_set_color(self): + link = self.robot.get_link('base_link') + link.color = Color(1, 0, 0, 1) + self.assertEqual(link.color.get_rgba(), [1, 0, 0, 1]) + + diff --git a/test/test_local_transformer.py b/test/test_local_transformer.py index c5eef02f7..283c8f31c 100644 --- a/test/test_local_transformer.py +++ b/test/test_local_transformer.py @@ -1,12 +1,8 @@ -import unittest import rospy -from time import sleep -from pycram.bullet_world import BulletWorld, Object from pycram.local_transformer import LocalTransformer -from pycram.robot_descriptions import robot_description -from pycram.pose import Pose, Transform +from pycram.datastructures.pose import Pose, Transform from bullet_world_testcase import BulletWorldTestCase @@ -44,7 +40,7 @@ def test_transform_pose_position(self): def test_update_for_object(self): l = LocalTransformer() self.milk.set_pose(Pose([1, 2, 1])) - l.update_transforms_for_object(self.milk) + self.milk.update_link_transforms() self.assertTrue(l.canTransform("map", self.milk.tf_frame, rospy.Time(0))) diff --git a/test/test_location_designator.py b/test/test_location_designator.py index ff4f4ea5f..714f8ad54 100644 --- a/test/test_location_designator.py +++ b/test/test_location_designator.py @@ -1,17 +1,13 @@ -import unittest from pycram.designators.location_designator import * -from pycram.designators import action_designator, object_designator from pycram.robot_descriptions import robot_description -from pycram.process_module import simulated_robot -from pycram.pose import Pose -import pycram.enums +from pycram.datastructures.pose import Pose from bullet_world_testcase import BulletWorldTestCase class TestActionDesignatorGrounding(BulletWorldTestCase): def test_reachability(self): - self.robot.set_joint_state(robot_description.torso_joint, 0.3) + self.robot.set_joint_position(robot_description.torso_joint, 0.3) object_desig = ObjectDesignatorDescription(names=["milk"]) robot_desig = ObjectDesignatorDescription(names=[robot_description.name]) location_desig = CostmapLocation(object_desig.resolve(), reachable_for=robot_desig.resolve()) @@ -37,7 +33,7 @@ def test_visibility(self): self.assertTrue(len(location.pose.orientation_as_list()) == 4) def test_reachability_and_visibility(self): - self.robot.set_joint_state(robot_description.torso_joint, 0.3) + self.robot.set_joint_position(robot_description.torso_joint, 0.3) object_desig = ObjectDesignatorDescription(names=["milk"]) robot_desig = ObjectDesignatorDescription(names=[robot_description.name]) location_desig = CostmapLocation(object_desig.resolve(), reachable_for=robot_desig.resolve(), visible_for=robot_desig.resolve()) diff --git a/test/test_move_and_pick_up.py b/test/test_move_and_pick_up.py new file mode 100644 index 000000000..e4161e12d --- /dev/null +++ b/test/test_move_and_pick_up.py @@ -0,0 +1,64 @@ +import random +import unittest +import time + +import numpy as np +from random_events.events import Event + +from pycram.designator import ObjectDesignatorDescription +from pycram.datastructures.enums import ObjectType +from pycram.designators.actions.actions import MoveTorsoActionPerformable +from pycram.plan_failures import PlanFailure +from pycram.process_module import simulated_robot +from pycram.resolver.probabilistic.probabilistic_action import MoveAndPickUp, GaussianCostmapModel +from bullet_world_testcase import BulletWorldTestCase +import plotly.graph_objects as go + + +class GaussianCostmapModelTestCase(unittest.TestCase): + + def test_create_model(self): + gcm = GaussianCostmapModel() + model = gcm.create_model() + self.assertEqual(model.probability(gcm.center_event()), 0) + self.assertEqual(len(model.variables), 4) + # p_xy = model.marginal([gcm.relative_x, gcm.relative_y]) + # go.Figure(p_xy.plot(), p_xy.plotly_layout()).show() + + +class MoveAndPickUpTestCase(BulletWorldTestCase): + + @classmethod + def setUpClass(cls): + super().setUpClass() + np.random.seed(69) + random.seed(69) + + def test_grounding(self): + object_designator = ObjectDesignatorDescription(types=[ObjectType.MILK]).resolve() + move_and_pick = MoveAndPickUp(object_designator, arms=["left", "right"], + grasps=["front", "left", "right", "top"]) + + model = move_and_pick.ground_model() + event = move_and_pick.events_from_occupancy_and_visibility_costmap() + self.assertTrue(event.are_events_disjoint()) + self.assertIsNotNone(model) + + + def test_move_and_pick_up(self): + object_designator = ObjectDesignatorDescription(types=[ObjectType.MILK]).resolve() + move_and_pick = MoveAndPickUp(object_designator, arms=["left", "right"], + grasps=["front", "left", "right", "top"]) + with simulated_robot: + for action in move_and_pick: + try: + MoveTorsoActionPerformable(0.3).perform() + action.perform() + return # Success + except PlanFailure as e: + continue + raise AssertionError("No action performed successfully.") + + +if __name__ == '__main__': + unittest.main() diff --git a/test/test_object.py b/test/test_object.py new file mode 100644 index 000000000..b024526c1 --- /dev/null +++ b/test/test_object.py @@ -0,0 +1,162 @@ +import numpy as np + +from bullet_world_testcase import BulletWorldTestCase + +from pycram.datastructures.enums import JointType, ObjectType +from pycram.datastructures.pose import Pose +from pycram.datastructures.dataclasses import Color +from pycram.world_concepts.world_object import Object + +from geometry_msgs.msg import Point, Quaternion +import pathlib + +class TestObject(BulletWorldTestCase): + + def test_wrong_object_description_path(self): + with self.assertRaises(FileNotFoundError): + milk = Object("milk2", ObjectType.MILK, "wrong_path.sk") + + def test_malformed_object_description(self): + file_path = pathlib.Path(__file__).parent.resolve() + malformed_file = str(file_path) + "/../resources/cached/malformed_description.urdf" + with open(malformed_file, "w") as file: + file.write("malformed") + with self.assertRaises(Exception): + Object("milk2", ObjectType.MILK, malformed_file) + + def test_move_base_to_origin_pose(self): + self.milk.set_position(Point(1, 2, 3), base=False) + self.milk.move_base_to_origin_pose() + self.assertEqual(self.milk.get_base_position_as_list(), [1, 2, 3]) + + def test_set_position_as_point(self): + self.milk.set_position(Point(1, 2, 3)) + self.assertEqual(self.milk.get_position_as_list(), [1, 2, 3]) + + def test_uni_direction_attachment(self): + self.milk.attach(self.cereal, bidirectional=False) + + milk_position = self.milk.get_position_as_list() + cereal_position = self.cereal.get_position_as_list() + + def move_milk_and_assert_cereal_moved(): + milk_position[0] += 1 + cereal_position[0] += 1 + self.milk.set_position(milk_position) + + new_cereal_position = self.cereal.get_position_as_list() + self.assertEqual(new_cereal_position, cereal_position) + + def move_cereal_and_assert_milk_not_moved(): + cereal_position[0] += 1 + self.cereal.set_position(cereal_position) + + new_milk_position = self.milk.get_position_as_list() + self.assertEqual(new_milk_position, milk_position) + + # move twice to test updated attachment at the new cereal position + for _ in range(2): + move_milk_and_assert_cereal_moved() + move_cereal_and_assert_milk_not_moved() + + def test_setting_wrong_position_type(self): + with self.assertRaises(TypeError): + self.milk.set_position(np.array([1, 2, 3])) + + with self.assertRaises(TypeError): + self.milk.get_pose().position = np.array([1, 2, 3]) + + def test_set_orientation_as_list(self): + self.milk.set_orientation([1, 0, 0, 0]) + self.assertEqual(self.milk.get_orientation_as_list(), [1, 0, 0, 0]) + + def test_set_orientation_as_quaternion(self): + self.milk.set_orientation(Quaternion(*[1, 0, 0, 0])) + self.assertEqual(self.milk.get_orientation_as_list(), [1, 0, 0, 0]) + + def test_set_orientation_as_ndarray(self): + self.milk.set_orientation(np.array([1, 0, 0, 0])) + self.assertEqual(self.milk.get_orientation_as_list(), [1, 0, 0, 0]) + + def test_set_wrong_orientation_type(self): + with self.assertRaises(TypeError): + self.milk.set_orientation(1) + + def test_set_position_as_pose(self): + self.milk.set_position(Pose([1, 2, 3])) + self.assertEqual(self.milk.get_position_as_list(), [1, 2, 3]) + + def test_set_position_as_list(self): + self.milk.set_position([1, 2, 3]) + self.assertEqual(self.milk.get_position_as_list(), [1, 2, 3]) + + def test_get_joint_axis(self): + self.assertEqual(self.robot.get_joint_axis("head_pan_joint"), Point(0.0, 0.0, 1.0)) + + def test_get_joint_type(self): + self.assertEqual(self.robot.get_joint_type("head_pan_joint"), JointType.REVOLUTE) + + def test_get_joint_lower_limit(self): + self.assertEqual(self.robot.get_joint_lower_limit("head_pan_joint"), -3.007) + + def test_get_joint_upper_limit(self): + self.assertEqual(self.robot.get_joint_upper_limit("head_pan_joint"), 3.007) + + def test_get_joint_damping(self): + self.assertEqual(self.robot.get_joint_damping("head_pan_joint"), 0.5) + + def test_save_state(self): + self.robot.attach(self.milk) + self.robot.save_state(1) + self.assertEqual(self.robot.saved_states[1].attachments, self.robot.attachments) + self.assertTrue(self.milk in self.robot.saved_states[1].attachments) + for link in self.robot.links.values(): + self.assertEqual(link.current_state, link.saved_states[1]) + + def test_restore_state(self): + self.robot.attach(self.milk) + self.robot.save_state(1) + self.milk.save_state(1) + self.assertTrue(self.milk in self.robot.attachments) + self.robot.detach(self.milk) + self.assertTrue(self.milk not in self.robot.attachments) + self.robot.restore_state(1) + self.milk.restore_state(1) + self.assertTrue(self.milk in self.robot.attachments) + for link in self.robot.links.values(): + curr_state = link.current_state + saved_state = link.saved_states[1] + self.assertEqual(curr_state, saved_state) + self.assertEqual(curr_state.constraint_ids, saved_state.constraint_ids) + + def test_get_link_by_id(self): + self.assertEqual(self.robot.get_link_by_id(-1), self.robot.root_link) + + def test_find_joint_above_link(self): + self.assertEqual(self.robot.find_joint_above_link("head_pan_link", JointType.REVOLUTE), "head_pan_joint") + + def test_wrong_joint_type_for_joint_above_link(self): + container_joint = self.robot.find_joint_above_link("head_pan_link", JointType.CONTINUOUS) + self.assertTrue(container_joint is None) + + def test_contact_points_simulated(self): + self.milk.set_position([0, 0, 100]) + contact_points = self.milk.contact_points_simulated() + self.assertFalse(contact_points) + self.milk.set_position(self.cereal.get_position_as_list(), base=True) + contact_points = self.milk.contact_points_simulated() + self.assertTrue(contact_points) + + def test_set_color(self): + self.milk.set_color(Color(1, 0, 0, 1)) + self.assertEqual(self.milk.get_color(), Color(1, 0, 0, 1)) + self.robot.set_color(Color(0, 1, 0, 1)) + for color in self.robot.get_color().values(): + self.assertEqual(color, Color(0, 1, 0, 1)) + + def test_object_equal(self): + milk2 = Object("milk2", ObjectType.MILK, "milk.stl") + self.assertNotEqual(self.milk, milk2) + self.assertEqual(self.milk, self.milk) + self.assertNotEqual(self.milk, self.cereal) + self.assertNotEqual(self.milk, self.world) diff --git a/test/test_object_designator.py b/test/test_object_designator.py index 625e107a2..51e8c856a 100644 --- a/test/test_object_designator.py +++ b/test/test_object_designator.py @@ -1,7 +1,7 @@ import unittest from bullet_world_testcase import BulletWorldTestCase from pycram.designators.object_designator import * -from pycram.enums import ObjectType +from pycram.datastructures.enums import ObjectType class TestObjectDesignator(BulletWorldTestCase): @@ -11,14 +11,14 @@ def test_object_grounding(self): obj = description.ground() self.assertEqual(obj.name, "milk") - self.assertEqual(obj.type, ObjectType.MILK) + self.assertEqual(obj.obj_type, ObjectType.MILK) - def test_data_copy(self): + def test_frozen_copy(self): description = ObjectDesignatorDescription(["milk"], [ObjectType.MILK]) obj = description.ground() - data_copy = obj.data_copy() - self.assertEqual(obj.pose, data_copy.pose) + frozen_copy = obj.frozen_copy() + self.assertEqual(obj.pose, frozen_copy.pose) if __name__ == '__main__': diff --git a/test/test_orm.py b/test/test_orm.py index ceec18c5d..f9c96c126 100644 --- a/test/test_orm.py +++ b/test/test_orm.py @@ -1,9 +1,7 @@ import os import unittest - -import sqlalchemy +from sqlalchemy import select import sqlalchemy.orm - import pycram.orm.action_designator import pycram.orm.base import pycram.orm.motion_designator @@ -12,15 +10,21 @@ import pycram.task import pycram.task from bullet_world_testcase import BulletWorldTestCase -import test_task_tree -from pycram.designators import action_designator, object_designator -from pycram.pose import Pose +from pycram.world_concepts.world_object import Object +from pycram.designators import action_designator, object_designator, motion_designator +from pycram.designators.actions.actions import ParkArmsActionPerformable, MoveTorsoActionPerformable, \ + SetGripperActionPerformable, PickUpActionPerformable, NavigateActionPerformable, TransportActionPerformable, \ + OpenActionPerformable, CloseActionPerformable, DetectActionPerformable, LookAtActionPerformable +from pycram.designators.object_designator import BelieveObject +from pycram.datastructures.enums import ObjectType +from pycram.datastructures.pose import Pose from pycram.process_module import simulated_robot from pycram.task import with_tree +from pycram.orm.views import PickUpWithContextView -class ORMTestSchema(unittest.TestCase): - engine: sqlalchemy.engine.Engine +class DatabaseTestCaseMixin(BulletWorldTestCase): + engine: sqlalchemy.engine session: sqlalchemy.orm.Session @classmethod @@ -30,28 +34,23 @@ def setUpClass(cls): def setUp(self): super().setUp() + pycram.orm.base.Base.metadata.create_all(self.engine) self.session = sqlalchemy.orm.Session(bind=self.engine) - self.session.commit() def tearDown(self): super().tearDown() + pycram.task.reset_tree() + pycram.orm.base.ProcessMetaData.reset() pycram.orm.base.Base.metadata.drop_all(self.engine) self.session.close() - @classmethod - def TearDownClass(cls): - super().tearDownClass() - cls.session.commit() - cls.session.close() +class ORMTestSchemaTestCase(DatabaseTestCaseMixin, unittest.TestCase): def test_schema_creation(self): - pycram.orm.base.Base.metadata.create_all(self.engine) - self.session.commit() tables = list(pycram.orm.base.Base.metadata.tables.keys()) self.assertTrue("Position" in tables) self.assertTrue("Quaternion" in tables) self.assertTrue("TaskTreeNode" in tables) - self.assertTrue("Code" in tables) self.assertTrue("Action" in tables) self.assertTrue("ParkArmsAction" in tables) self.assertTrue("NavigateAction" in tables) @@ -68,33 +67,18 @@ def test_schema_creation(self): self.assertTrue("CloseAction" in tables) -class ORMTaskTreeTestCase(test_task_tree.TaskTreeTestCase): - engine: sqlalchemy.engine.Engine - session: sqlalchemy.orm.Session +class ORMTaskTreeTestCase(DatabaseTestCaseMixin): - @classmethod - def setUpClass(cls): - super().setUpClass() - cls.engine = sqlalchemy.create_engine("sqlite+pysqlite:///:memory:", echo=False) - - def setUp(self): - super().setUp() - pycram.orm.base.Base.metadata.create_all(self.engine) - self.session = sqlalchemy.orm.Session(bind=self.engine) - self.session.commit() - - def tearDown(self): - super().tearDown() - pycram.task.reset_tree() - pycram.orm.base.ProcessMetaData.reset() - pycram.orm.base.Base.metadata.drop_all(self.engine) - self.session.close() - - @classmethod - def TearDownClass(cls): - super().tearDownClass() - cls.session.commit() - cls.session.close() + @with_tree + def plan(self): + object_description = object_designator.ObjectDesignatorDescription(names=["milk"]) + description = action_designator.PlaceAction(object_description, [Pose([1.3, 1, 0.9], [0, 0, 0, 1])], ["left"]) + self.assertEqual(description.ground().object_designator.name, "milk") + with simulated_robot: + NavigateActionPerformable(Pose([0.6, 0.4, 0], [0, 0, 0, 1])).perform() + MoveTorsoActionPerformable(0.3).perform() + PickUpActionPerformable(object_description.resolve(), "left", "front").perform() + description.resolve().perform() def test_node(self): """Test if the objects in the database is equal with the objects that got serialized.""" @@ -102,208 +86,248 @@ def test_node(self): pycram.orm.base.ProcessMetaData().description = "Unittest" pycram.task.task_tree.root.insert(self.session, ) - node_results = self.session.query(pycram.orm.task.TaskTreeNode).all() + node_results = self.session.scalars(select(pycram.orm.task.TaskTreeNode)).all() self.assertEqual(len(node_results), len(pycram.task.task_tree.root)) - code_results = self.session.query(pycram.orm.task.Code).all() - self.assertEqual(len(code_results), len(pycram.task.task_tree.root)) - - position_results = self.session.query(pycram.orm.base.Position).all() + position_results = self.session.scalars(select(pycram.orm.base.Position)).all() self.assertEqual(14, len(position_results)) - quaternion_results = self.session.query(pycram.orm.base.Quaternion).all() + quaternion_results = self.session.scalars(select(pycram.orm.base.Quaternion)).all() self.assertEqual(14, len(quaternion_results)) - park_arms_results = self.session.query(pycram.orm.action_designator.ParkArmsAction).all() + park_arms_results = self.session.scalars(select(pycram.orm.action_designator.ParkArmsAction)).all() self.assertEqual(0, len(park_arms_results)) - navigate_results = self.session.query(pycram.orm.action_designator.NavigateAction).all() + navigate_results = self.session.scalars(select(pycram.orm.action_designator.NavigateAction)).all() self.assertEqual(1, len(navigate_results)) - action_results = self.session.query(pycram.orm.action_designator.Action).all() + action_results = self.session.scalars(select(pycram.orm.action_designator.Action)).all() self.assertEqual(4, len(action_results)) + def test_metadata_existence(self): + pycram.orm.base.ProcessMetaData().description = "metadata_existence_test" + self.plan() + pycram.task.task_tree.root.insert(self.session) + result = self.session.scalars(select(pycram.orm.base.Pose)).all() + self.assertTrue(all([r.process_metadata is not None for r in result])) + + def test_task_tree_node_parents(self): + self.plan() + pycram.orm.base.ProcessMetaData().description = "task_tree_node_parents_test" + pycram.task.task_tree.root.insert(self.session) + result = self.session.scalars(select(pycram.orm.task.TaskTreeNode)).all() + self.assertTrue([result[i].parent == result[result[i].parent_id - 1] for i in range(len(result)) + if result[i].parent_id is not None]) + def test_meta_data(self): self.plan() pycram.orm.base.ProcessMetaData().description = "Unittest" pycram.task.task_tree.root.insert(self.session, ) - metadata_results = self.session.query(pycram.orm.base.ProcessMetaData).all() + metadata_results = self.session.scalars(select(pycram.orm.base.ProcessMetaData)).all() self.assertEqual(1, len(metadata_results)) - action_results = self.session.query(pycram.orm.action_designator.Action).all() + action_results = self.session.scalars(select(pycram.orm.action_designator.Action)).all() self.assertTrue(all([a.process_metadata_id for a in action_results])) - park_arms_results = self.session.query(pycram.orm.action_designator.ParkArmsAction).all() + park_arms_results = self.session.scalars(select(pycram.orm.action_designator.ParkArmsAction)).all() self.assertTrue(all([a.process_metadata_id for a in park_arms_results])) - object_results = self.session.query(pycram.orm.object_designator.Object).all() + object_results = self.session.scalars(select(pycram.orm.object_designator.Object)).all() self.assertTrue(all([o.process_metadata_id for o in object_results])) def test_meta_data_alternation(self): - meta_data = pycram.orm.base.ProcessMetaData() - meta_data.description = "Test" self.plan() + pycram.orm.base.ProcessMetaData().description = "meta_data_alternation_test" pycram.task.task_tree.root.insert(self.session, ) - metadata_result = self.session.query(pycram.orm.base.ProcessMetaData).first() - self.assertEqual(metadata_result.description, "Test") + metadata_result = self.session.scalars(select(pycram.orm.base.ProcessMetaData)).first() + self.assertEqual(metadata_result.description, "meta_data_alternation_test") -class ORMObjectDesignatorTestCase(BulletWorldTestCase): - """Test ORM functionality with a plan including object designators. """ - - engine: sqlalchemy.engine.Engine - session: sqlalchemy.orm.Session - +class MixinTestCase(DatabaseTestCaseMixin): @with_tree def plan(self): object_description = object_designator.ObjectDesignatorDescription(names=["milk"]) description = action_designator.PlaceAction(object_description, [Pose([1.3, 1, 0.9], [0, 0, 0, 1])], ["left"]) self.assertEqual(description.ground().object_designator.name, "milk") with simulated_robot: - action_designator.NavigateAction.Action(Pose([0.6, 0.4, 0], [0, 0, 0, 1])).perform() - action_designator.MoveTorsoAction.Action(0.3).perform() - action_designator.PickUpAction.Action(object_description.resolve(), "left", "front").perform() + NavigateActionPerformable(Pose([0.6, 0.4, 0], [0, 0, 0, 1])).perform() + MoveTorsoActionPerformable(0.3).perform() + PickUpActionPerformable(object_description.resolve(), "left", "front").perform() description.resolve().perform() - @classmethod - def setUpClass(cls): - super().setUpClass() - cls.engine = sqlalchemy.create_engine("sqlite+pysqlite:///:memory:", echo=False) - cls.session = sqlalchemy.orm.Session(bind=cls.engine) - - def setUp(self): - super().setUp() - pycram.orm.base.Base.metadata.create_all(self.engine) - self.session.commit() - - def tearDown(self): - super().tearDown() - pycram.orm.base.Base.metadata.drop_all(self.engine) - pycram.task.reset_tree() - - @classmethod - def tearDownClass(cls): - super().tearDownClass() - cls.session.commit() - cls.session.close() + def test_pose(self): + self.plan() + pycram.orm.base.ProcessMetaData().description = "pose_test" + pycram.task.task_tree.root.insert(self.session) + result = self.session.scalars(select(pycram.orm.base.Pose)).all() + self.assertTrue(all([r.position is not None and r.orientation is not None for r in result])) - def test_plan_serialization(self): + def test_pose_mixin(self): self.plan() - pycram.orm.base.ProcessMetaData().description = "Unittest" - tt = pycram.task.task_tree - tt.insert(self.session) - action_results = self.session.query(pycram.orm.action_designator.Action).all() - motion_results = self.session.query(pycram.orm.motion_designator.Motion).all() - self.assertEqual(len(tt) - 2, len(action_results) + len(motion_results)) + pycram.orm.base.ProcessMetaData().description = "pose_mixin_test" + pycram.task.task_tree.root.insert(self.session) + result = self.session.scalars(select(pycram.orm.base.RobotState)).all() + self.assertTrue(all([r.pose is not None and r.pose_id == r.pose.id for r in result])) -class RelationshipTestCase(test_task_tree.TaskTreeTestCase): - engine: sqlalchemy.engine.Engine - session: sqlalchemy.orm.Session +class ORMObjectDesignatorTestCase(DatabaseTestCaseMixin): + """Test ORM functionality with a plan including object designators. """ - @with_tree - def plan(self): + def test_plan_serialization(self): object_description = object_designator.ObjectDesignatorDescription(names=["milk"]) description = action_designator.PlaceAction(object_description, [Pose([1.3, 1, 0.9], [0, 0, 0, 1])], ["left"]) self.assertEqual(description.ground().object_designator.name, "milk") with simulated_robot: - action_designator.NavigateAction.Action(Pose([0.6, 0.4, 0], [0, 0, 0, 1])).perform() - action_designator.MoveTorsoAction.Action(0.3).perform() - action_designator.PickUpAction.Action(object_description.resolve(), "left", "front").perform() + NavigateActionPerformable(Pose([0.6, 0.4, 0], [0, 0, 0, 1])).perform() + MoveTorsoActionPerformable(0.3).perform() + PickUpActionPerformable(object_description.resolve(), "left", "front").perform() description.resolve().perform() + pycram.orm.base.ProcessMetaData().description = "Unittest" + tt = pycram.task.task_tree + tt.insert(self.session) + action_results = self.session.scalars(select(pycram.orm.action_designator.Action)).all() + motion_results = self.session.scalars(select(pycram.orm.motion_designator.Motion)).all() + self.assertEqual(len(tt) - 1, len(action_results) + len(motion_results)) - @classmethod - def setUpClass(cls): - super().setUpClass() - cls.engine = sqlalchemy.create_engine("sqlite+pysqlite:///:memory:", echo=False) - def setUp(self): - super().setUp() - pycram.orm.base.Base.metadata.create_all(self.engine) - self.session = sqlalchemy.orm.Session(bind=self.engine) - self.session.commit() +class ORMActionDesignatorTestCase(DatabaseTestCaseMixin): - def tearDown(self): - super().tearDown() - pycram.task.reset_tree() - pycram.orm.base.ProcessMetaData.reset() - pycram.orm.base.Base.metadata.drop_all(self.engine) - self.session.close() - - @classmethod - def TearDownClass(cls): - super().tearDownClass() - cls.session.commit() - cls.session.close() - - def test_metadata(self): - pycram.orm.base.ProcessMetaData().description = "MetaDataRelationshipTest" - self.plan() + def test_code_designator_type(self): + action = NavigateActionPerformable(Pose([0.6, 0.4, 0], [0, 0, 0, 1])) + with simulated_robot: + action.perform() + pycram.orm.base.ProcessMetaData().description = "code_designator_type_test" pycram.task.task_tree.root.insert(self.session) - result = self.session.query(pycram.orm.base.Position).all() - self.assertTrue(all([r.process_metadata is not None for r in result])) + result = self.session.scalars(select(pycram.orm.task.TaskTreeNode).where(pycram.orm.task.TaskTreeNode. + action_id.isnot(None))).all() + self.assertEqual(result[0].action.dtype, action_designator.NavigateAction.__name__) + self.assertEqual(result[1].action.dtype, motion_designator.MoveMotion.__name__) - def test_task_tree_node_parents(self): - self.plan() - pycram.orm.base.ProcessMetaData().description = "taskTest" + def test_parkArmsAction(self): + action = ParkArmsActionPerformable(pycram.datastructures.enums.Arms.BOTH) + with simulated_robot: + action.perform() + pycram.orm.base.ProcessMetaData().description = "parkArmsAction_test" pycram.task.task_tree.root.insert(self.session) - r = self.session.query(pycram.orm.task.TaskTreeNode).all() - self.assertTrue([r[i].parent == r[r[i].parent_id - 1] for i in range(len(r)) if r[i].parent_id is not None]) - - -class MotionDesigTest(BulletWorldTestCase): - engine: sqlalchemy.engine.Engine - session: sqlalchemy.orm.Session + result = self.session.scalars(select(pycram.orm.action_designator.ParkArmsAction)).all() + self.assertTrue(all([result[i + 1].dtype is not pycram.orm.action_designator.Action.dtype + if result[i].dtype is pycram.orm.action_designator.ParkArmsAction.dtype else None + for i in range(len(result) - 1)])) - @with_tree - def plan(self): + def test_transportAction(self): object_description = object_designator.ObjectDesignatorDescription(names=["milk"]) - description = action_designator.PlaceAction(object_description, [Pose([1.3, 0.9, 0.9], [0, 0, 0, 1])], ["left"]) - self.assertEqual(description.ground().object_designator.name, "milk") + action = TransportActionPerformable(object_description.resolve(), "left", + Pose([1.3, 0.9, 0.9], [0, 0, 0, 1])) with simulated_robot: - action_designator.NavigateAction.Action(Pose([0.6, 0.4, 0], [0, 0, 0, 1])).perform() - action_designator.MoveTorsoAction.Action(0.3).perform() - action_designator.LookAtAction.Action(Pose([0.6, 0.4, 0], [0, 0, 0, 1])).perform() - action_designator.PickUpAction.Action(object_description.resolve(), "left", "front").perform() - action_designator.SetGripperAction.Action("right", "open").perform() - description.resolve().perform() + action.perform() + pycram.orm.base.ProcessMetaData().description = "transportAction_test" + pycram.task.task_tree.root.insert(self.session) + result = self.session.scalars(select(pycram.orm.action_designator.TransportAction)).all() + milk_object = self.session.scalars(select(pycram.orm.object_designator.Object)).first() + self.assertEqual(milk_object.pose, result[0].object.pose) - @classmethod - def setUpClass(cls): - super().setUpClass() - cls.engine = sqlalchemy.create_engine("sqlite+pysqlite:///:memory:", echo=False) + def test_lookAt_and_detectAction(self): + object_description = object_designator.ObjectDesignatorDescription(names=["milk"]) + action = DetectActionPerformable(object_description.resolve()) + with simulated_robot: + ParkArmsActionPerformable(pycram.datastructures.enums.Arms.BOTH).perform() + NavigateActionPerformable(Pose([0, 1, 0], [0, 0, 0, 1])).perform() + LookAtActionPerformable(object_description.resolve().pose).perform() + action.perform() + pycram.orm.base.ProcessMetaData().description = "detectAction_test" + pycram.task.task_tree.root.insert(self.session) + result = self.session.scalars(select(pycram.orm.action_designator.DetectAction)).all() + self.assertEqual(result[0].object.name, "milk") - def setUp(self): - super().setUp() - pycram.orm.base.Base.metadata.create_all(self.engine) - self.session = sqlalchemy.orm.Session(bind=self.engine) - self.session.commit() + def test_setGripperAction(self): + action = SetGripperActionPerformable("left", "open") + with simulated_robot: + action.perform() + pycram.orm.base.ProcessMetaData().description = "setGripperAction_test" + pycram.task.task_tree.root.insert(self.session) + result = self.session.scalars(select(pycram.orm.action_designator.SetGripperAction)).all() + self.assertEqual(result[0].gripper, "left") + self.assertEqual(result[0].motion, "open") - def tearDown(self): - super().tearDown() - pycram.task.reset_tree() - pycram.orm.base.ProcessMetaData.reset() - pycram.orm.base.Base.metadata.drop_all(self.engine) - self.session.close() + def test_open_and_closeAction(self): + apartment = Object("apartment", ObjectType.ENVIRONMENT, "apartment.urdf") + apartment_desig = BelieveObject(names=["apartment"]).resolve() + handle_desig = object_designator.ObjectPart(names=["handle_cab10_t"], part_of=apartment_desig).resolve() - @classmethod - def TearDownClass(cls): - super().tearDownClass() - cls.session.commit() - cls.session.close() + self.kitchen.set_pose(Pose([20, 20, 0], [0, 0, 0, 1])) - def testTest(self): - self.plan() - pycram.orm.base.ProcessMetaData().description = "Unittest" - tt = pycram.task.task_tree - tt.insert(self.session) + with simulated_robot: + ParkArmsActionPerformable(pycram.datastructures.enums.Arms.BOTH).perform() + NavigateActionPerformable(Pose([1.81, 1.73, 0.0], + [0.0, 0.0, 0.594, 0.804])).perform() + OpenActionPerformable(handle_desig, arm="left").perform() + CloseActionPerformable(handle_desig, arm="left").perform() - def test_insert_base_motion(self): - motion = pycram.orm.motion_designator.Motion() - self.assertIsNone(motion.id) - self.session.add(motion) - self.session.commit() - self.assertIsNotNone(motion.id) + pycram.orm.base.ProcessMetaData().description = "open_and_closeAction_test" + pycram.task.task_tree.root.insert(self.session) + open_result = self.session.scalars(select(pycram.orm.action_designator.OpenAction)).all() + close_result = self.session.scalars(select(pycram.orm.action_designator.CloseAction)).all() + self.assertTrue(open_result is not None) + self.assertEqual(open_result[0].object.name, "handle_cab10_t") + self.assertTrue(close_result is not None) + self.assertEqual(close_result[0].object.name, "handle_cab10_t") + apartment.remove() + + +class ViewsSchemaTest(DatabaseTestCaseMixin): + def test_view_creation(self): + pycram.orm.base.ProcessMetaData().description = "view_creation_test" + pycram.task.task_tree.root.insert(self.session) + view = PickUpWithContextView + self.assertEqual(len(view.__table__.columns), 12) + self.assertEqual(view.__table__.name, "PickUpWithContextView") + self.assertEqual(view.__table__.columns[0].name, "id") + self.assertEqual(view.__table__.columns[1].name, "arm") + self.assertEqual(view.__table__.columns[2].name, "grasp") + self.assertEqual(view.__table__.columns[3].name, "torso_height") + self.assertEqual(view.__table__.columns[4].name, "relative_x") + self.assertEqual(view.__table__.columns[5].name, "relative_y") + self.assertEqual(view.__table__.columns[6].name, "quaternion_x") + self.assertEqual(view.__table__.columns[7].name, "quaternion_y") + self.assertEqual(view.__table__.columns[8].name, "quaternion_z") + self.assertEqual(view.__table__.columns[9].name, "quaternion_w") + self.assertEqual(view.__table__.columns[10].name, "obj_type") + self.assertEqual(view.__table__.columns[11].name, "status") + + def test_pickUpWithContextView(self): + object_description = object_designator.ObjectDesignatorDescription(names=["milk"]) + description = action_designator.PlaceAction(object_description, [Pose([1.3, 1, 0.9], [0, 0, 0, 1])], ["left"]) + self.assertEqual(description.ground().object_designator.name, "milk") + with simulated_robot: + NavigateActionPerformable(Pose([0.6, 0.4, 0], [0, 0, 0, 1])).perform() + MoveTorsoActionPerformable(0.3).perform() + PickUpActionPerformable(object_description.resolve(), "left", "front").perform() + description.resolve().perform() + pycram.orm.base.ProcessMetaData().description = "pickUpWithContextView_test" + pycram.task.task_tree.root.insert(self.session) + result = self.session.scalars(select(PickUpWithContextView)).first() + self.assertEqual(result.arm, "left") + self.assertEqual(result.grasp, "front") + self.assertEqual(result.torso_height, 0.3) + self.assertAlmostEqual(result.relative_x, -0.7, 6) + self.assertAlmostEqual(result.relative_y, -0.6, 6) + self.assertEqual(result.quaternion_x, 0) + self.assertEqual(result.quaternion_w, 1) + + def test_pickUpWithContextView_conditions(self): + object_description = object_designator.ObjectDesignatorDescription(names=["milk"]) + description = action_designator.PlaceAction(object_description, [Pose([1.3, 1, 0.9], [0, 0, 0, 1])], ["left"]) + self.assertEqual(description.ground().object_designator.name, "milk") + with simulated_robot: + NavigateActionPerformable(Pose([0.6, 0.4, 0], [0, 0, 0, 1])).perform() + MoveTorsoActionPerformable(0.3).perform() + PickUpActionPerformable(object_description.resolve(), "left", "front").perform() + description.resolve().perform() + pycram.orm.base.ProcessMetaData().description = "pickUpWithContextView_conditions_test" + pycram.task.task_tree.root.insert(self.session) + result = self.session.scalars(select(PickUpWithContextView) + .where(PickUpWithContextView.arm == "right")).all() + self.assertEqual(result, []) if __name__ == '__main__': diff --git a/test/test_pose.py b/test/test_pose.py index 97064a56d..4467b4765 100644 --- a/test/test_pose.py +++ b/test/test_pose.py @@ -1,6 +1,6 @@ import unittest -from pycram.pose import Pose, Transform +from pycram.datastructures.pose import Pose, Transform class TestPose(unittest.TestCase): @@ -73,5 +73,5 @@ def test_transform_copy(self): t = Transform([1, 1, 1], [0, 0, 0, 1], "map", "test_frame") t_copy = t.copy() - self.assertEquals(t, t_copy) + self.assertEqual(t, t_copy) self.assertFalse(t is t_copy) diff --git a/test/test_task_tree.py b/test/test_task_tree.py index 1a89f6650..55141719d 100644 --- a/test/test_task_tree.py +++ b/test/test_task_tree.py @@ -1,10 +1,12 @@ -from pycram.pose import Pose +from pycram.designators.actions.actions import MoveTorsoActionPerformable, PickUpActionPerformable, \ + NavigateActionPerformable +from pycram.datastructures.pose import Pose from pycram.process_module import simulated_robot import pycram.task from pycram.task import with_tree import unittest import anytree -from bullet_world_testcase import BulletWorldTestCase +from bullet_world_testcase import BulletWorldTestCase import pycram.plan_failures from pycram.designators import object_designator, action_designator @@ -17,9 +19,9 @@ def plan(self): description = action_designator.PlaceAction(object_description, [Pose([1.3, 1, 0.9], [0, 0, 0, 1])], ["left"]) self.assertEqual(description.ground().object_designator.name, "milk") with simulated_robot: - action_designator.NavigateAction.Action(Pose([0.6, 0.4, 0], [0, 0, 0, 1])).perform() - action_designator.MoveTorsoAction.Action(0.3).perform() - action_designator.PickUpAction.Action(object_description.resolve(), "left", "front").perform() + NavigateActionPerformable(Pose([0.6, 0.4, 0], [0, 0, 0, 1])).perform() + MoveTorsoActionPerformable(0.3).perform() + PickUpActionPerformable(object_description.resolve(), "left", "front").perform() description.resolve().perform() def setUp(self): @@ -32,18 +34,12 @@ def test_tree_creation(self): # self.tearDownBulletWorld() tt = pycram.task.task_tree - # print(anytree.RenderTree(tt)) - self.assertEqual(15, len(tt.root)) self.assertEqual(10, len(tt.root.leaves)) - names = [node.code.function.__name__ for node in anytree.PreOrderIter(tt.root)] - self.assertEqual(names, ["no_operation", "plan", "perform", "perform", "perform", "perform", "perform", - "perform", "perform", "perform", "perform", "perform", "perform", "perform", "perform"] - ) # check that all nodes succeeded for node in anytree.PreOrderIter(tt.root): - if node.code != pycram.task.NoOperation(): + if not isinstance(node.action, pycram.task.NoOperation): self.assertEqual(node.status, pycram.task.TaskStatus.SUCCEEDED) def test_exception(self): @@ -52,6 +48,7 @@ def test_exception(self): @with_tree def failing_plan(): raise pycram.plan_failures.PlanFailure("PlanFailure for UnitTesting") + pycram.task.reset_tree() self.assertRaises(pycram.plan_failures.PlanFailure, failing_plan) @@ -59,17 +56,17 @@ def failing_plan(): tt = pycram.task.task_tree for node in anytree.PreOrderIter(tt.root): - if node.code != pycram.task.NoOperation(): + if not isinstance(node.action, pycram.task.NoOperation): self.assertEqual(node.status, pycram.task.TaskStatus.FAILED) self.assertEqual(pycram.plan_failures.PlanFailure, type(node.reason)) def test_execution(self): self.plan() - self.world.reset_bullet_world() + self.world.reset_world() tt = pycram.task.task_tree # self.setUpBulletWorld(False) with simulated_robot: - [node.code.execute() for node in tt.root.leaves] + [node.action.perform() for node in tt.root.leaves] def test_simulated_tree(self): with pycram.task.SimulatedTaskTree() as st: @@ -78,13 +75,15 @@ def test_simulated_tree(self): self.assertEqual(15, len(tt.root)) self.assertEqual(10, len(tt.root.leaves)) - names = [node.code.function.__name__ for node in anytree.PreOrderIter(tt.root)] - self.assertEqual(names, ["simulation", "plan", "perform", "perform", "perform", "perform", "perform", - "perform", "perform", "perform", "perform", "perform", "perform", "perform", - "perform"]) self.assertEqual(len(pycram.task.task_tree), 1) + def test_to_sql(self): + self.plan() + tt = pycram.task.task_tree + result = tt.root.to_sql() + self.assertIsNotNone(result) + if __name__ == '__main__': unittest.main()